我的框架中有很多文本字段,因此不可能为每个文本域中都有一个焦点监听器。所以我想使用一个焦点监听器功能,并在焦点丢失时获取文本。
tf1=new JTextField();
tf1.setBounds(200,300,150,50);
tf1.setText("");
tf1.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
tfFocusLost(evt);
}
});
add(tf1);
tf2=new JTextField();
tf2.setBounds(200,500,150,50);
tf2.setText("");
tf2.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
tfFocusLost(evt);
}
});
add(tf2);
private void tfFocusLost(java.awt.event.FocusEvent evt) {
s=this.getText();
System.out.println(s);
}
答案 0 :(得分:2)
为什么不创建自己的扩展FocusAdapter
的类,而不是为每个JTextField
创建一个匿名类:
public class MyFocusAdapter extends FocusAdapter {
private final JTextField text;
public MyFocusAdapter(JTextField text) {
this.text = text;
}
public void focusLost(java.awt.event.FocusEvent evt) {
System.out.println(text);
}
}
然后你可以使用这个类:
tf1.addFocusListener(new MyFocusAdapter(tf1));
tf2.addFocusListener(new MyFocusAdapter(tf2));
答案 1 :(得分:0)
您需要更改tfFocusLost的实现。
private void tfFocusLost(java.awt.event.FocusEvent evt) {
s=this.getText();
System.out.println(s);
}
而不是上面你可以使用这样的东西。
private void tfFocusLost(java.awt.event.FocusEvent evt, JTextField textField ) {
s=textField.getText();
System.out.println(s);
}
并将其称为tfFocusLost(evt,tf1);