按下按钮时什么也没发生

时间:2019-10-23 13:38:09

标签: java swing

我正在创建一个程序,允许用户输入函数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)

我的ActionPerformed方法如下:

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

我添加了System.out.println来检查程序是否知道何时单击“提交”按钮,但是没有任何内容被打印到控制台,我的问题是为什么以及如何更改它?

我想问的另一件事是如何同时获取x1,x2的输入?我知道我可能需要一个if函数来检查所有字段是否为空?

4 个答案:

答案 0 :(得分:0)

"submit".equals(e.getActionCommand())替换为e.getSource()==submit,它应该可以正常工作。

答案 1 :(得分:0)

您应该为“提交”按钮明确设置操作命令。 像这样:

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

请记住,您应该先为Component(此处指JButton)设置操作命令,然后才能将操作命令传递给ActionEvent

答案 2 :(得分:0)

问题出在您的actionCommand上。

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

如果您未明确设置操作命令,它将恢复为Button text

如果按钮文字太长或使用不便,请执行以下操作:

submit.setActionCommand("submit");

答案 3 :(得分:0)

尝试声明一个匿名内部类,这将为您的按钮创建一个动作监听器。另外,如果您以后决定添加更多按钮,这将很有用,因为您可以为每个按钮声明一个新类。 只需记住稍后再定义submitButtonPressed()即可。

您的代码如下:

    JButton submit = new JButton("Submit values");
    submit.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            submitButtonPressed();
        }
    });