我有一个JTextField
,我想为它添加监听器,当JTextField
失去焦点时(例如当我用鼠标点击另一个组件),将接收到一些事件。此外,我希望监听器在JTextField
的text
参数更改时(例如当我使用jtextfield.setText(anotherText)
设置文本时)也能接收到事件。你有什么好的方法吗?
我有一个JTextField
,我想为它添加监听器,当JTextField
失去焦点时(例如当我用鼠标点击另一个组件),将接收到一些事件。此外,我希望监听器在JTextField
的text
参数更改时(例如当我使用jtextfield.setText(anotherText)
设置文本时)也能接收到事件。你有什么好的方法吗?
对于第一个问题,您需要使用FocusListener。对于第二个问题,您需要向文本字段的文档添加一个DocumentListener。
JTextField textfield = new JTextField();
//for focus use FocusAdapter and just override focus lost
textfield.addFocusListener(new FocusAdapter(){
@Override
public void focusLost(final FocusEvent evt){
//i always like to wrap this method with swing utilities
// which puts it at the end of the EventQueue, so it's executed after all pending events
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
//code here
}
});
}
});
textfield.addPropertyChangeListener("text", new PropertyChangeListener(){
@Override
public void propertyChange(PropertyChangeEvent evt){
if(evt == null)
return;
if("text".equals(evt.getPropertyName())){
//code here
}
}
});