在我的代码示例中,如何从JFormattedTextField中删除Focus Listener?

时间:2014-06-26 21:38:49

标签: 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以删除该焦点侦听器。

对不起我的经验不足,希望你能指出我正确的方向,所以我能理解我做错了什么。

非常感谢任何帮助,非常感谢。

1 个答案:

答案 0 :(得分:1)

创建一个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);