красное затмение БОРИС ВОЛЬФСОН Спецвыпуск: Хакер, номер #065, стр. 065-048-5 result[0] = (-b) / (2 * a); } else if (d > 0) { result = new double[2]; result[0] = (-b — Math.sqrt(d)) / (2 * a); result[1] = (-b + Math.sqrt(d)) / (2 * a); } return result; } gui Дело осталось за графическим интерфейсом. Будем использовать SWT, который применяет элементы интерфейса операционной системы и поэтому работает быстро. Кстати, на SWT построена и сама Eclipse. Приступим! File-> New-> Visual Class, выбираем стиль JFrame (и не забудь положить класс в пакет ui). Слева появилась палитра инструментов, в которой должны быть выбраны нужные компоненты. Возьмем три метки (JLabel) и три поля ввода (JTextField) для коэффициентов, две метки для вывода ответа (одна для надписи «Ответ», во вторую будем класть результат и кнопку для запуска вычисления). Вот компоненты помещены на окно, теперь нужно настроить их свойства в виде Properties, аналогичном окошкам для настроек в Delphi и Visual Studio. Затем вешаем на кнопку событие: выбираем из контекстного меню кнопки Events-> actionPerformed. В редакторе пишем код (точнее, его часть), который берет значения, введенные пользователем, преобразует их в тип double и вызывает метод FindRoots, затем заносит в метку результат. private JButton getJButton() { if (jButton == null) { jButton = new JButton(); jButton.setText("OK"); jButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { QuadricRoots quadricRoots = new QuadricRoots(); double a = Double.parseDouble(aTextField.getText()); double b = Double.parseDouble(bTextField.getText()); double c = Double.parseDouble(cTextField.getText()); double[] answer = quadricRoots.FindRoots(a, b, c); if (answer == null) { answerLabel.setText("Решений нет"); } else if (answer.length == 1) { answerLabel.setText("x1 = " + String.valueOf(answer[0])); } else if (answer.length == 2) { answerLabel.setText("x1 = " + String.valueOf(answer[0]) + "; x2 = " + String.valueOf(answer[1])); } } }); } return jButton; } Осталось написать программу, которая будет показывать окно. Идем протоптанной дорожкой File-> New-> Class, помещаем класс в пакет main. Ставим галочку «public static void main(String[] args)», заполняем этот метод: public static void main(String[] args) { MainWindow mainWindow = new MainWindow(); mainWindow.show(); } Для запуска программы жмем <Ctrl>+<F11> (или <F11>, если необходимо отладить программу). Программу, конечно, можно еще и доработать — разгрузить форму от логики, отрефакторить класс QuadricRoots, но мы остановимся на том, что есть. все мы дровосеки Представь себе двух дровосеков. Один рубит деревья старым тупым топором, а второй использует для этого дела бензопилу. Каким бы мастером своего дела ни был первый дровосек, по количеству спиленных деревьев он никогда не догонит второго. Абсолютно аналогичная ситуация в программировании: очень много зависит от используемых инструментов. Посмотри на свой «топор». Может, он тоже стал старым и тупым? Может, пора сменить его на нечто более новое? |