2017-03-11 59 views
1

假设我们有两个带有“Calculate”和“Exit”捕获的JButton对象。对于未通过创建实现ActionListener的类的缘故,我们的hve通过的ActionListener inplemented全班和方法的actionPerformed看起来是这样的:ActionListener JTextField Java

public void actionPerformed(ActionEvent e) { 

    if (e.getActionCommand().equals("Calculate")) 
     // do what "calculate" button does 
    else if (e.getActionCommand().equals("Exit")) 
     System.exit(0); 

} 

我的问题是什么,如果我们有两个文本字段(JTextField中)。我们应该如何重写actionPerformed方法?用户在该字段中输入Enter键后返回JTextField名称的方法是什么?

+0

写一个单独的类为您'ActionListener'实现。当你实例化它时,在构造函数中注入一个'JTextField'。然后你的'actionPerformed'方法可以访问文本字段,并可以调用'getText()'。 – byxor

回答

0

对于未通过创建实现ActionListener的类的缘故...

你不应该使用一个单一的监听器。相反,您应该为每个要实现的功能使用单独的侦听器。

我的问题是如果我们有两个文本字段(JTextField)。

而不是将ActionListener添加到文本字段,您可以添加自定义TextActionTextAction支持getFocusedComponent()方法,该方法将返回当前具有焦点的文本字段。这就是所有Swing操作如何在文本组件上实现的。

举个简单的例子,你可以看看:What text input component last had the focus?