如何在运行时将项目插入jcombobox并保存

时间:2013-01-13 20:03:19

标签: java swing actionlistener jcombobox comboboxmodel

我需要在运行时将值保存在我的jcombobox中。我想要做的是点击一个按钮后,我将其设置为editable = true。然后在组合框中键入值,但不保存。

private void btadbknameActionPerformed(java.awt.event.ActionEvent evt) {
  if(evt.getSource()== btadbkname){
    cb_bkname.setEditable(true);
    cb_bkname.getText();
    cb_bkname.addItem(evt);
  }else{
    cb_bkname.setEditable(false);
  }
}

我已经在设计级别添加了一些元素,但是如果有一些随机值就会有问题。

3 个答案:

答案 0 :(得分:3)

  • 因为可以add / remove Item({/ 1}}来自DefaultComboBoxModel来覆盖JComboBox,所以同样的操作(默认情况下)是可能来自外面。

  • 您必须使用add remove Item / JComboBox来自MutableComboBoxModel来自其自身的事件(view_to_model)。

  • @Robin MutableComboBoxModehere提供了extends AbstractListModel implements MutableComboBoxModel的优秀示例。

  • here,为将来的读者,否则搜索{{1}}。

答案 1 :(得分:1)

它不可能按你尝试的方式工作。

在单击按钮之前,comboBox必须是可编辑的,然后您只需要这一行

cb_bkname.addItem(((JTextField)cb_bkname.getEditor().getEditorComponent()).getText());

答案 2 :(得分:1)

试试这个

private void btadbknameActionPerformed(java.awt.event.ActionEvent evt) {
      if(evt.getSource()== btadbkname){
        cb_bkname.setEditable(true);
        String newItem=cb_bkname.getText();
        cb_bkname.addItem(newItem);
      }else{
        cb_bkname.setEditable(false);
      }
    }