我的项目中有2个JTextField
组件和1个JComboBox
。
当我在文本字段中输入数据时,组合框将为每个字母或数字添加单独的项目/行。
我该如何解决?
看图片:
这是我的代码:
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]
答案 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);
}
});