【发布时间】:2012-10-24 09:57:48
【问题描述】:
我有两个文本字段(tf1 和 tf2),其中使用了 KeyEvent 来获取键入的字符。
JTextField tf1 = new JTextField(10);
JTextField tf2 = new JTextField(10);
tf1.setFocusable(true);
tf2.setFocusable(true);
//regerstring for event
tf1.addKeyListener(new KeyHandler(tf1, tf2));
tf2.addKeyListener(new KeyHandler(tf1, tf2));
class KeyHandler extends KeyAdapter{
JTextField tf1;
JTextField tf2;
KeyHandler(JTextField tf1, JTextField tf2){
tf1 = this.tf1;
tf2 = this.tf2;
}
public void keyTyped(KeyEvent e){
char ch = e.getKeyChar();
System.out.println(e.getKeyLocation());
if(e.getSource() == tf1)
System.out.println("tf1");
else if (e.getSource() == tf2)
System.out.println("tf2");
}
我尝试过 KeyEvent 类的 getSource() 但它返回 JTextField 的对象,我必须区分 tf1 和 tf2。
如何在 keyTyped() 中获取关联的文本文件引用
【问题讨论】:
-
为什么 getSource() 不起作用?
-
为什么使用 KeyListener 而不是 DocumentListener 或 DocumentFilter?
-
@lewstherin 我建议文本字段在本地声明,而不是实例字段
-
@MadProgrammer 是的,好点。看起来答案已被编辑以反映它;)
标签: java swing jtextfield keylistener keyevent