JTextField不更新for循环中的用户输入

时间:2013-12-21 17:18:52

标签: java swing for-loop jlabel jtextfield

我的for循环没有更新,我得到用户每次输入的相同字母的输出“mmmmmm”或“ffffff”。我希望它每次都能不断更新下一个字母:

用户输入:m
用户输入:f
用户输入:d

输出:“使用的字母:mfd”

int j = 0;  
String []used = new String[6];  
for(j = 0; j<6; j++){  
    used[j] = tf.getText(); //get user input  
}  
jl2.setText("Letters Used:    " + used[0] + used[1] + used[2] + used[3] + used[4] + used[5] );  

1 个答案:

答案 0 :(得分:5)

你不应该为此使用for循环。 JTextField已使用DocumentListener

内置了对文本更改的回调
tf.getDocument().addDocumentListener(new DocumentListener() {
    public void changedUpdate(DocumentEvent e) {          // text was changed
        jl2.setText("Letters Used:    " + tf.getText());
    }
    public void removeUpdate(DocumentEvent e) {}          // text was deleted
    public void insertUpdate(DocumentEvent e) {}          // text was inserted
});  

<强> 更新

如果您只想回复Enter,请使用ActionListener which is called on Enter presses

jl2.setText("Letters Used:    ");

tf.addActionListener(new ActionListener(){
    @Override public void actionPerformed(ActionEvent e){
        jl2.setText(jl2.getText() + tf.getText());
    }
});

注意: 实际上,ActionEvent是由系统的外观“接受”操作触发的。在大多数情况下,这是输入键。