Почему не работает кнопка? Подскажите пожалуйста почему не срабатывает SumButtonListener. Возникает ошибка формата данных. Наверное что то с парсингом натворил. перечитал кучу интернет страничек но так и не нашёл решения. Если знаете где можно посмотреть киньте ссылку пожалуйста. public class CalculatorTest {

public static JPanel panelGeneral;
public static JLabel numL1, numL2, numL3;
public static JTextField numEdit1, numEdit2, numEdit3;
public static JButton buttonSum, buttonSub, buttonMulti, buttonDiv, buttonEqually;
public static JPanel panel1, panel2, panel3, panel4;
public static void main(String[] args) {


JFrame frame = new JFrame("Калькулятор");
frame.setSize(250, 360);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);

panelGeneral = new JPanel();
frame.add(panelGeneral);
BoxLayout bxLayout = new BoxLayout(panelGeneral, BoxLayout.PAGE_AXIS);
panelGeneral.setLayout(bxLayout);

numL1 = new JLabel("Введите первое число");
numL2 = new JLabel("Введите второе число");
numL3 = new JLabel("Результат");

numEdit1 = new JTextField(20);
numEdit2 = new JTextField(20);
numEdit3 = new JTextField(5);

buttonSum = new JButton("+");
buttonSum.setPreferredSize(new Dimension(50, 50));

buttonSub = new JButton("-");
buttonSub.setPreferredSize(new Dimension(50, 50));

buttonMulti = new JButton("x");
buttonMulti.setPreferredSize(new Dimension(50, 50));

buttonDiv = new JButton(":");
buttonDiv.setPreferredSize(new Dimension(50, 50));

buttonEqually = new JButton("=");
buttonEqually.setPreferredSize(new Dimension(80, 50));

panel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
panel1.setPreferredSize(new Dimension(250, 60));
panel1.add(numL1);
panel1.add(numEdit1);
panel1.add(numL2);
panel1.add(numEdit2);
// panel1.setBackground(Color.red);

panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
panel2.setPreferredSize(new Dimension(250, 20));
panel2.add(numL3);
panel2.add(numEdit3);
// panel2.setBackground(Color.blue);

panel3 = new JPanel(new FlowLayout(FlowLayout.CENTER));
panel3.setPreferredSize(new Dimension(250, 20));
panel3.add(buttonSum);
panel3.add(buttonSub);
panel3.add(buttonMulti);
panel3.add(buttonDiv);
// panel3.setBackground(Color.yellow);

panel4 = new JPanel(new FlowLayout(FlowLayout.CENTER));
panel4.setPreferredSize(new Dimension(250, 20));
panel4.add(buttonEqually);
// panel4.setBackground(Color.cyan);


panelGeneral.add(panel1);
panelGeneral.add(panel2);
panelGeneral.add(panel3);
panelGeneral.add(panel4);

buttonEqually.addActionListener(new ButtonListener());
buttonSum.addActionListener(new SumButtonListener());


/*buttonEqually.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showConfirmDialog(null, "Всем привет");
}
});*/



}

public static class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(null, "Это кнопка сработала");
}

}

public static class SumButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
int pole1 = Integer.parseInt(numEdit1.toString());
int pole2 = Integer.parseInt(numEdit2.toString());

Integer sumPole = pole1 + pole2;
numEdit3.setText(sumPole.toString());
}

}


}

21 Авг 2019 в 07:08
228 +1
0
Ответы
1

Проблема в вашем коде заключается в том, что вы использовали метод toString() для получения значений из текстовых полей numEdit1 и numEdit2, а должны были использовать метод getText(). Метод toString() возвращает строковое представление объекта, а не его текстовое содержимое.

Исправьте следующие строки в методе SumButtonListener:

int pole1 = Integer.parseInt(numEdit1.getText());
int pole2 = Integer.parseInt(numEdit2.getText());

После этого ваш код должен корректно парсить данные из текстовых полей и выполнять сложение чисел при нажатии на кнопку "+".

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир