Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #65, АПРЕЛЬ 2006 г.

красное затмение

БОРИС ВОЛЬФСОН

Спецвыпуск: Хакер, номер #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, но мы остановимся на том, что есть.

все мы дровосеки

Представь себе двух дровосеков. Один рубит деревья старым тупым топором, а второй использует для этого дела бензопилу. Каким бы мастером своего дела ни был первый дровосек, по количеству спиленных деревьев он никогда не догонит второго. Абсолютно аналогичная ситуация в программировании: очень много зависит от используемых инструментов. Посмотри на свой «топор». Может, он тоже стал старым и тупым? Может, пора сменить его на нечто более новое?

Назад на стр. 065-048-4  Содержание  Вперед на стр. 065-048-6