2017-03-17 65 views
0

当我从Jlist中选择一个值时,我想将它追加到Jtextfield而不替换现有的值, 这是我尝试到目前为止,正如你所看到的,值我想追加JList选择的项目到Jtextfield

jlist.addListSelectionListener(new ListSelectionListener() { 

     @Override 
     public void valueChanged(ListSelectionEvent arg0) { 
      if (!arg0.getValueIsAdjusting()) { 
       textField.setText(jlist.getSelectedValue()); 

      } 
     } 

请帮我解决这个问题

+0

您试图从字段中获取文本和修改文字,而不是取代它? –

+0

我不明白你在说什么,请你澄清一下吗? –

回答

1

澄清:

jlist.addListSelectionListener(new ListSelectionListener() { 

    @Override 
    public void valueChanged(ListSelectionEvent arg0) { 
     if (!arg0.getValueIsAdjusting()) { 
      textField.setText(textField.getText() + jlist.getSelectedValue()); 

     } 
    } 
1

我不喜欢使用的getText()/的setText()一接近角。这会产生不准确的DocumentEvents。它将生成一个事件,用于删除所有文本,然后生成另一个用于添加现有文本和附加文本的不准确的事件。

可以更新文本字段的Document

Document doc = textField.getDocument(); 
doc.insertString(doc.getLength(), jList.getSelectedValue().toString(), null); 

您将需要包装的代码在一个try/catch块。

或者一招,以避免在try/catch块是使用:

textField.setCaretPosition(textField.getDocument().getLength()); 
textField.replaceSelection(jList.getSelectedValue().toString());