我正在创建一个程序,允许用户输入函数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函数来检查所有字段是否为空?
答案 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();
}
});