好的,所以每个文本字段都是动作监听器。我做了很多测试,发现添加动作监听器不是问题。问题出现在下面的代码中,因为对于前四个文本字段,hello窗口显示但不是ok。但是在底部,弹出ok窗口和hello窗口。我做错了什么?
public class handler implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == text)
{
JOptionPane.showMessageDialog(null, "ok");
}
else if (event.getSource() == text1)
{
JOptionPane.showMessageDialog(null, "ok");
}
else if (event.getSource() == text2)
{
JOptionPane.showMessageDialog(null, "ok");
}
else if (event.getSource() == text3)
{
JOptionPane.showMessageDialog(null, "ok");
}
else if (event.getSource() == text4)
{
JOptionPane.showMessageDialog(null, "ok");
}
JOptionPane.showMessageDialog(null, "hello");
}
}
答案 0 :(得分:1)
你遇到的问题是你正在做一个浅薄的比较:
event.getSource() == textX
因此,您永远不会遇到if-else中的任何条件,也永远不会看到text1 ... text4的“ok”对话框。
看起来您正在尝试将单个ActionListener用于多个文本字段,然后根据事件源(发生事件的文本字段)区分行为。
您可能需要考虑为每个文本字段创建一个ActionListener实现,而不是这样做。
我通常将我的ActionListeners创建为匿名类,以便我可以在事件发生时自定义我想要为特定字段发生的事情,但我不必在应用程序中扩展类。