我有两个文本字段(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()中获取关联的文本文件引用

最佳答案

比较地址如下:

if (e.getSource() == tf1) {
   // Source is the first text field
}


正如MadProgrammer指出的那样,您需要在创建范围之外使用文本字段的实例变量(在您的情况下为tf1和tf2)

关于java - 获取KeyEvent的来源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13046871/

10-12 04:16