【问题标题】:KeyTyped method says TextField is blank ... when it's notKeyTyped 方法说 TextField 是空白的......当它不是
【发布时间】:2012-03-20 15:31:13
【问题描述】:
        Jtxtfield.addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent e) {};
        public void keyTyped(KeyEvent e) {
            if(Jtxtfield.getText().equals(""))
            System.out.println("hello1");
        }public void keyReleased(KeyEvent e) {
            if(Jtxtfield.getText().equals(""))
            System.out.println("hello2");
        }
    });

按下的第一个键(比如'a')的输出是:hello1。 如果我按第二个键(例如,再次“a”),则没有输出(如预期的那样)。 如果我按两次删除键,我会得到 hello1 hello2。

为什么会这样?为什么 keyTyped 方法将 txtfield 视为其中没有任何内容?更具体地说,为什么当我按下文本字段中按下的第一个键时,我只得到 hello1?

【问题讨论】:

    标签: java swing user-interface jtextfield keylistener


    【解决方案1】:

    文本字段依次触发三个事件:按键事件、按键输入事件和按键释放事件。按键类型事件没有按键代码信息;他们也没有修饰符信息。如果您只关心用户输入的字符,您应该处理按键输入事件。如果您关心用户按下/释放哪些键,则应处理按键按下/释放事件。

    如果您想要文本字段的值,请使用 keyReleased(KeyEvent e) as

    JTextField txt = (JTextField) e.getSource();
    System.out.println(txt.getText());
    

    一个例子你可以找到here

    您也可以使用DocumentListener

    【讨论】:

    • 那么...这如何回答我的问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2015-06-25
    • 2017-04-30
    相关资源
    最近更新 更多