Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

TarasovVLJavaAndEclipse_20_VisualProgramming

.pdf
Скачиваний:
12
Добавлен:
08.04.2015
Размер:
1.36 Mб
Скачать

private JTextField txt_c; private JLabel lblRightPart; private JButton btnSolve; private JLabel label; private JLabel lblSolution;

/**

* Launch the application. */

public static void main(String[] args) { EventQueue.invokeLater(new Runnable() {

public void run() { try {

frmSquareEquation frame = new frmSquareEquation(); frame.setVisible(true);

} catch (Exception e) { e.printStackTrace();

}

}

});

}

/**

* Create the frame. */

public frmSquareEquation() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 362, 288);

contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null);

lblTaskName = new JLabel("Квадратное уравнение"); lblTaskName.setBounds(83, 15, 184, 30); lblTaskName.setFont(new Font("Tahoma", Font.BOLD, 14)); contentPane.add(lblTaskName);

lbl_a = new JLabel("x2 + "); lbl_a.setBounds(70, 66, 32, 15);

lbl_a.setFont(new Font("Tahoma", Font.PLAIN, 12)); contentPane.add(lbl_a);

txt_a = new JTextField(); txt_a.setBounds(5, 64, 58, 21); txt_a.setText("0");

txt_a.setFont(new Font("Tahoma", Font.PLAIN, 12)); contentPane.add(txt_a);

txt_a.setColumns(10);

txt_b = new JTextField(); txt_b.setBounds(108, 63, 58, 21); txt_b.setText("0");

txt_b.setFont(new Font("Tahoma", Font.PLAIN, 12)); txt_b.setColumns(10);

contentPane.add(txt_b);

lbl_b = new JLabel("x + "); lbl_b.setBounds(172, 66, 32, 15);

lbl_b.setFont(new Font("Tahoma", Font.PLAIN, 12)); contentPane.add(lbl_b);

txt_c = new JTextField(); txt_c.setBounds(200, 64, 47, 21);

txt_c.setFont(new Font("Tahoma", Font.PLAIN, 12)); txt_c.setText("0");

contentPane.add(txt_c); txt_c.setColumns(10);

lblRightPart = new JLabel("= 0"); lblRightPart.setBounds(268, 66, 20, 15); lblRightPart.setFont(new Font("Tahoma", Font.PLAIN, 12)); contentPane.add(lblRightPart);

btnSolve = new JButton("Решить уравнение"); btnSolve.setBounds(75, 119, 213, 23); contentPane.add(btnSolve);

label = new JLabel("Решение"); label.setBounds(147, 151, 64, 21); label.setFont(new Font("Tahoma", Font.BOLD, 14)); contentPane.add(label);

lblSolution = new JLabel(" "); lblSolution.setBackground(Color.WHITE); lblSolution.setBounds(10, 183, 326, 30); lblSolution.setHorizontalAlignment(SwingConstants.CENTER); lblSolution.setFont(new Font("Tahoma", Font.BOLD, 14)); contentPane.add(lblSolution);

}

}

Реализация алгоритма решения квадратного уравнения

Решение уравнения реализуем в обработчике события для кнопки Решить уравнение. Текст обработчика приведен в листинге 6.

Листинг 6. Код обработчика для кнопки "Решить уравнение"

btnSolve.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) {

double a, b, c; // Коэффициенты уравнения try{

a = Double.parseDouble(txt_a.getText());

}

catch(NumberFormatException nfe){ a = 0.0; txt_a.setText("0.0");

}

try{

b = Double.parseDouble(txt_b.getText());

}

catch(NumberFormatException nfe){ b = 0.0; txt_b.setText("0.0");

}

try{

c = Double.parseDouble(txt_c.getText());

}

catch(NumberFormatException nfe){ c = 0.0; txt_c.setText("0.0");

}

 

double D = b * b - 4. * a * c;

// Дискриминант

double x1, x2;

// Корни

String Sol = "";

 

if(D < 0.0)

 

Sol = "Действительных корней нет"; else if(D > 0. && a != 0.){

x1 = (-b + Math.sqrt(D)) / (2. * a); x2 = (-b - Math.sqrt(D)) / (2. * a);

Sol = "Корни: x1 = " + x1 + ", x2 = " + x2;

}

else if(D == 0.0 && a != 0.0){ x1 = -b / (2. * a);

Sol = "Корень x = " + x1;

}

else if(a == 0 && b != 0.){ x1 = -c / b;

Sol = "Корень x = " + x1;

}

lblSolution.setText(Sol);

}

});

Окно работающей программы приведено на рис. 27.

Рис. 27. Окно программы для решения квадратных уравнений

Когда коэффициенты уравнения изменяются, то желательно очищать метку, показывающую решения. Очистку решения будем выполнять в обработчике события textChanged (рис.)

Рис. 28. Создание обработчика для события textChanged

Литература

1.ГУТОР С.С., ЭНГЛЕВСКИЙ Н.А. Установка SWING - компонента Eclipce для визуального программирования.- HTTP://IMAGEJ.RU/RESURSI-DLYA-RAZRABOTCHIKA/

USTANOVKA-SWING-KOMPONENTA-ECLIPCE-DLYA- VIZUALNOGO-PROGRAMMIROVANIYA.HTML