【问题标题】:Why is there is a space added to make string in JTextArea after a KeyListener?为什么在KeyListener之后在JTextArea中添加了一个空格来制作字符串?
【发布时间】:2015-02-28 15:04:43
【问题描述】:

首先我制作了一个简单的打字程序。如果您键入一个字母并按空格键,则 TTextArea 将与标签文本匹配以查看它是否匹配。但它总是出现错误,因为每次第一次输出后的字母前都有空格,我不明白为什么?这是刚刚发生的事情还是可以吗

这是我的代码

public void keyTyped(KeyEvent e) {
 if(e.getKeyChar() == KeyEvent.VK_SPACE){
    input = textArea.getText();
    if(input.length() <= 0){
        JOptionPane.showMessageDialog(null, "Type something first");
    } else {
        input.trim();
        System.out.println(input);
        gameLogic.score(input, letterLabel.getText());
        gameLogic.error(input, letterLabel.getText());
        scoreLabel.setText("Score: " + String.valueOf(gameLogic.score));
        errorLabel.setText("Errors: " + String.valueOf(gameLogic.error));
        gameLogic.changeDifficulty();
        letterLabel.setText( gameLogic.changeText());
        textArea.setText("");
        textArea.setCaretPosition(0);
    }
}

这是我的输出

   l
    l
    x
    k
    ss

【问题讨论】:

    标签: java


    【解决方案1】:

    几件事...

    KeyListener 不是处理监视或影响任何文本组件更改的推荐方法。如果您足够幸运,组件没有使用击键,则该组件已经使用最后一次击键进行了更新。

    如果您只想监视文本组件的更改,更好的方法是使用DocumentListener,如果您想更改传递给字段的内容,则使用DocumentFilter

    查看Using Text Components了解更多详情

    【讨论】:

      猜你喜欢
      • 2016-04-26
      • 2017-03-11
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多