将焦点侦听器添加到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以删除该焦点侦听器。
对不起我的经验不足,希望你能指出我正确的方向,所以我能理解我做错了什么。
非常感谢任何帮助,非常感谢。
答案 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);