Как я могу получить значение от JTextField до JComboBox? - PullRequest
0 голосов
/ 14 декабря 2018

В моем проекте 2 JTextField компонента и 1 * 1002. *

Когда я вводю данные в текстовые поля, комбинированное окно добавляет отдельные элементы / строки для каждой буквы или цифры.

Как я могу это исправить?

Смотри картинку:

combobox picture

Вот мой код:

t1.getDocument().addDocumentListener(new DocumentListener() {
          public void changedUpdate(DocumentEvent e) {
           changed();
          }
          public void removeUpdate(DocumentEvent e) {
           changed();
          }
          public void insertUpdate(DocumentEvent e) {
            changed();
        }

        public void changed() {
            if (!t1.getText().trim().isEmpty())
            {
                c1.addItem(t1.getText());
                }
          }
        });
    [Combobox adding separate row][1]

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

В соответствии с тем, что я понимаю из вашей проблемы, вы хотите добавить элементы в свой выпадающий список, как только пользователь завершит ввод полного имени элемента.Для этого:

Удалите прослушиватель документов и вместо этого используйте actionListener, который запускается автоматически при нажатии клавиши ввода.

Ваш код будет выглядеть так:

t1.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e){
         if (!t1.getText().trim().isEmpty())
             c1.addItem(t1.getText());
    }
});
0 голосов
/ 15 декабря 2018

Каждый раз, когда изменяется ваш «t1», вы добавляете в свой комбо еще один элемент.

Вместо добавления слушателя в текстовое поле, вы можете добавить FocusListener в свой комбо.Там вы сможете получить содержимое текстового поля и добавить его в свое меню в открытом процессе.

Вы можете сделать что-то вроде (возможно, это не лучший вариант, но будет работать):

        c1.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {}

        @Override
        public void focusGained(FocusEvent e) {
            c1.addItem(t1.getText);
        }
    });
...