当我从Jlist中选择一个值时,我想将其附加到Jtextfield而不替换现有值, 这就是我尝试到目前为止,正如您所看到的,这正在取代现有的价值
jlist.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent arg0) {
if (!arg0.getValueIsAdjusting()) {
textField.setText(jlist.getSelectedValue());
}
}
请帮我解决这个问题
答案 0 :(得分:1)
澄清:
jlist.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent arg0) {
if (!arg0.getValueIsAdjusting()) {
textField.setText(textField.getText() + jlist.getSelectedValue());
}
}
答案 1 :(得分: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() );