Java从 "addActionListener"调用 "FocusListener"

标签 java actionlistener focuslistener

我有 JTextField。如果用户在其中写入内容然后失去焦点(例如单击其他位置),我需要保存更改

mMaxLabelLength = new JTextField();
mMaxLabelLength.addActionListener(this);

public void focusGained(FocusEvent fe)
{
    System.out.println("4");
    mMaxLabelLength.addActionListener(this);
}

@Override
public void focusLost(FocusEvent fe)
{
    System.out.println("5");
    mMaxLabelLength.addActionListener(this);
}

    public void actionPerformed(ActionEvent e)
{
    //Do something
    }

问题是我无法从“focusLost/focusGain”调用“actionPerformed”。我需要将“actionPerformed”保留为单独的方法,因为我也从其他地方调用它。

最佳答案

所以,当焦点丢失时,您想要执行与在 actionPerformed() 中已经执行的操作完全相同的操作,对,对。所以,就这样做:

@Override
public void focusLost(FocusEvent fe) {
    doSomething();
}

public void actionPerformed(ActionEvent e){
    doSomething();
}

private void doSomething() {
    // ...
}

关于Java从 "addActionListener"调用 "FocusListener",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34725312/

相关文章:

java - 使用 JConsole 等连接到卡住的 jvm

java - 使用 ActionListener 时 NewJFrame 出现错误

Java:ActionListener 错误

java - JTextField 在获得焦点时选择所有内容

react-native - 尝试重置导航会引发错误

java - 我在 Eclipse 的 Simulator BlackBerry java 插件中找不到应用程序图标

java - EasyMock 循环内的期望

java - 使用有效 URL 在 HttpsUrlConnection 上重置连接

java - 如何将变量/对象从 Action 监听器传递到驱动程序类?

java - 如何找到哪个组件是焦点?