我有 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/