TarasovVLJavaAndEclipse_20_VisualProgramming
.pdfprivate 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