Ничего не происходит при нажатии кнопки - PullRequest
4 голосов
/ 23 октября 2019

Я создаю программу, которая позволяет пользователю вводить значения функции x, фрагмент кода ниже:

JLabel f1= new JLabel (" x1 = ");
JLabel f2 = new JLabel (" x2 = ");

JButton submit = new JButton("Submit values");
submit.addActionListener(this);

JTextField x1 = new JTextField();
JTextField x2 = new JTextField();

inputPanel.add(f1);
inputPanel.add(x1);
inputPanel.add(f2);
inputPanel.add(x2);

inputPanel.add(submit);

Это выглядит примерно так:

x1 = [input field] x2 =[input field] (submit values)

My ActionPerformedМетод выглядит следующим образом:

public void actionPerformed(ActionEvent e)
{
    if("submit".equals(e.getActionCommand()))
    {
        System.out.println("click");
    }
}

Я добавил System.out.println, чтобы проверить, знает ли программа, когда я нажимаю кнопку отправки, но на консоль ничего не выводится, мой вопроспочему и как я могу это изменить?

и еще одна вещь, которую я хочу спросить, это как я могу одновременно принимать ввод x1, x2? Я понимаю, что мне, вероятно, понадобится функция if, чтобы проверить, не заполнено ли ни одно из полей?

Ответы [ 4 ]

0 голосов
/ 23 октября 2019

Попробуйте объявить анонимный внутренний класс, это создаст прослушиватель действий только для вашей кнопки. Кроме того, это будет полезно, если вы решите добавить больше кнопок в будущем, поскольку вы можете просто объявить новый класс для каждой кнопки. Просто не забудьте определить submitButtonPressed () позже.

Ваш код будет выглядеть следующим образом:

    JButton submit = new JButton("Submit values");
    submit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            submitButtonPressed();
        }
    });
0 голосов
/ 23 октября 2019

Вы должны явно установить команду действия для кнопки «отправить». Например:

JButton submit = new JButton("Submit values");
submit.addActionListener(this);
submit.setActionCommand("submit");

Помните, что вы должны установить команду действия для Component (здесь это относится к JButton), прежде чем она сможет передать команду действия ActionEvent.

0 голосов
/ 23 октября 2019

Проблемы с вашей командой actionCommand.

JButton submit = new JButton("Submit values");

Если вы явно не задаете команду действия, она возвращается к Button text.

Если текст вашей кнопки слишкомдолго или неудобно в использовании, тогда сделайте следующее:

submit.setActionCommand("submit");
0 голосов
/ 23 октября 2019

Замените "submit".equals(e.getActionCommand()) на e.getSource()==submit, и оно должно работать так, как вы ожидаете.

...