我想将JList选中的项追加到Jtextfield

时间:2017-03-17 10:16:23

标签: java swing

当我从Jlist中选择一个值时,我想将其附加到Jtextfield而不替换现有值, 这就是我尝试到目前为止,正如您所看到的,这正在取代现有的价值

    jlist.addListSelectionListener(new ListSelectionListener() {

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

            }
        }

请帮我解决这个问题

2 个答案:

答案 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() );