java - 在我的代码示例中,如何从 JFormattedTextField 中删除焦点监听器?

标签 java focuslistener

将焦点监听器添加到 JFormattedTextField 后,我在删除焦点监听器时遇到问题。我读到removeFocusListener ,但找不到如何使用它的示例。这看起来很简单,但无论我尝试什么,它都行不通。

这是代码的相关部分,我在其中添加监听器,用它执行我需要的操作,以及我想要删除它的位置:

private JFormattedTextField heightArea;
heightArea.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        heightArea.setText(getHeight(widthArea));
    }

    @Override
    public void focusLost(FocusEvent e) {
    }
});
// From here on I want to remove this listener.

我会尝试这样的事情:

heightArea.removeFocusListener(new FocusListener() );

heightArea.removeFocusListener(heightArea.FocusListener() );

但是当然没用。我不太确定应该从 heightArea 传递给 removeFocusListener 来删除该焦点监听器。

抱歉,我的经验不足,希望你能指出我正确的方向,这样我就能明白我做错了什么。

感谢您的帮助,非常感谢。

最佳答案

创建一个类 MyFocusListener 并声明一个相同类型的类级变量。像这样的事情

MyFocusListener myFocusListener = new MyFocusListener();

    class MyFocusListener implements FocusListener {

        @Override
        public void focusGained(FocusEvent e) {
           // add your logic here
        }

        @Override
        public void focusLost(FocusEvent e) {

        }

    }

然后将此监听器添加/删除到您的文本字段

heightArea.addFocusListener(myFocusListener);
heightArea.removeFocusListener(myFocusListener);

关于java - 在我的代码示例中,如何从 JFormattedTextField 中删除焦点监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440701/

相关文章:

java - 没有链接的类图

java - WindowIconfield 和 FocusLost 不能一起使用

java - JButton 以编程方式显示工具提示 : actionMap. get ("postTip") 为空

java - 如何在 Java 中打印多个可变行

java - 在 Java 中绘制 3D 函数和点

java - 创建多个由用户输入定义的 JTextField s,以便通过按下按钮从所有这些输入中读取文本

android - 如何将焦点监听器设置为编辑文本的中心

event-handling - netbeans 中 Jcombobox 上的 Focuslost 事件

Java - 是否可以将焦点监听器添加到组合框?

java - Ruby 是否像 Java 一样跨平台?