我如何从JTextField到JComboBox获得价值?

时间:2018-12-14 20:45:50

标签: java swing jtextfield jcombobox

我的项目中有2个JTextField组件和1个JComboBox

当我在文本字段中输入数据时,组合框将为每个字母或数字添加单独的项目/行。

我该如何解决?

看图片:

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 :(得分:1)

根据我对您的问题的了解,一旦用户完成输入完整的商品名称,您想将商品添加到组合框中。为此:

删除您的文档侦听器,而是使用actionListener,当用户按下Enter键时会自动触发它。

您的代码应为:

t1.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e){
         if (!t1.getText().trim().isEmpty())
             c1.addItem(t1.getText());
    }
});

答案 1 :(得分:0)

每次更改“ t1”时,您都会在组合中添加另一个项目。

您可以在组合中添加FocusListener,而不是在文本字段中添加侦听器。在那里,您将能够获取文本字段的内容并在打开过程中添加菜单。

您可以做类似的事情(也许这不是最好的选择,但是会起作用):

        c1.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {}

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