选择的组合框值两次添加到arraylist

时间:2014-05-04 09:21:16

标签: java swing arraylist jcombobox itemlistener

我使用SQL查询填充了组合框的元素,并将选定的值写入arraylist。当我打印出arraylist的元素时,该值已被添加两次。有谁知道这是为什么,我怎么阻止这种情况发生?

代码摘录:

resultSet = statement.executeQuery("SELECT name FROM menu WHERE category = 'beverage'");
while (resultSet.next())
{
    beverageJComboBox.addItem(resultSet.getString(1));
    System.out.printf("%s", resultSet.getString(1));
}

对于将Array添加到ArrayList:

beverageJComboBox.addItemListener(
     new ItemListener()
     {
          public void itemStateChanged( ItemEvent event )
          {
              billItems.add((String)beverageJComboBox.getSelectedItem());
              System.out.printf("%s", billItems); 
          }
     }// end anonymous inner class
); 

(Java新手!)

1 个答案:

答案 0 :(得分:1)

使用ActionListener代替ItemListener

    beverageJComboBox.addActionListener (new ActionListener () {
        public void actionPerformed(ActionEvent e) {
            ...
        }
    });

注意:在查询中使用distinct关键字来显示JComboBox中的唯一记录。