Java 如何保存用户输入和JComboBox选择?

Java 如何保存用户输入和JComboBox选择?,java,swing,jcombobox,jtextfield,Java,Swing,Jcombobox,Jtextfield,我正在开发我的第一个(非常基本的)Java应用程序。我在保存用户信息方面遇到了问题;特别是,将用户输入从文本字段附加到JComboBox选择。我该怎么做?到目前为止,我有: String comps[] = {Computer 1, Computer 2, Computer 3}; //array for JComboBox jcbb = new JComboBox<String>(comps); //create JComboBox if (ae.getActionCommand

我正在开发我的第一个(非常基本的)Java应用程序。我在保存用户信息方面遇到了问题;特别是,将用户输入从文本字段附加到JComboBox选择。我该怎么做?到目前为止,我有:

String comps[] = {Computer 1, Computer 2, Computer 3}; //array for JComboBox
jcbb = new JComboBox<String>(comps); //create JComboBox

if (ae.getActionCommand().equals("Save")) { //user hits the Save button

        StringBuilder sb = new StringBuilder(); //string to hold data
        sb.append((String) macTF.getText()); //get data from textfield
        sb.append(" ");
        sb.append((String) jcbb.getSelectedItem()); //get JComboBox item
        sb.append(" ");
        //***what to do with the held data?***
    }
String comps[]={计算机1、计算机2、计算机3}//JComboBox的数组
jcbb=新的JComboBox(comps)//创建JComboBox
如果(ae.getActionCommand().equals(“保存”){//用户点击保存按钮
StringBuilder sb=new StringBuilder();//用于保存数据的字符串
sb.append((String)macTF.getText());//从textfield获取数据
某人加上(“”);
sb.append((字符串)jcbb.getSelectedItem());//获取JComboBox项
某人加上(“”);
//***如何处理保留的数据***
}
我知道我错过了很多,但只要朝着正确的方向轻推一下就会有所帮助。我一直在书籍和网络上搜索,找到了很多不同的答案,但我无法应用它们。我是否将StringBuilder输出到文本文件并加载它?或者如何使用这两组数据构建一个数组?还是完全不同的东西


谢谢你的帮助

您可以使用
addItem
方法():

另外,你会遇到一个问题:

String comps[] = {Computer 1, Computer 2, Computer 3}; //array for JComboBox
jcbb = new JComboBox<String>(comps); //create JComboBox
  • 允许您将项目添加到组合框中,或者如果您想在某个索引处插入项目
  • 允许您删除项目
因此,一个可能的解决方案如下,尽管缺点是由于元素的添加/删除和选择的更改,它会生成大量事件。然而,这就是你想要的行为

public <E> void replaceComboBoxItem( JComboBox<E> combo, E itemToReplace, E replacement ){
   boolean selected = combo.getSelectedItem() == itemToReplace;
   combo.insertItemAt( replacement, indexOf( combo, itemToReplace ) );
   combo.removeItem( itemToReplace );
   if ( selected ){
      combo.setSelectedItem( itemToReplace );
   }
}
private <E> int indexOf( JComboBox<E> combo, E item ){
  for( int i =0; i < combo.getItemCount(); i++ ){
    if ( combo.getItemAt( i ).equals( item ) ){
       return i;
    }
  }
  return -1;
}

注意:这里输入的代码可能包含小的语法错误

谢谢Talnocolas的快速响应!请原谅我的无知,但是addItem会将文本字段数据添加为新的组合框选择,还是将文本字段数据分配给现有的组合框选择?@Sett组合框选择是什么意思?
String comps[] = {"Computer 1", "Computer 2", "Computer 3"}; //array for JComboBox
jcbb = new JComboBox(comps); //create JComboBox
public <E> void replaceComboBoxItem( JComboBox<E> combo, E itemToReplace, E replacement ){
   boolean selected = combo.getSelectedItem() == itemToReplace;
   combo.insertItemAt( replacement, indexOf( combo, itemToReplace ) );
   combo.removeItem( itemToReplace );
   if ( selected ){
      combo.setSelectedItem( itemToReplace );
   }
}
private <E> int indexOf( JComboBox<E> combo, E item ){
  for( int i =0; i < combo.getItemCount(); i++ ){
    if ( combo.getItemAt( i ).equals( item ) ){
       return i;
    }
  }
  return -1;
}
replaceComboBoxItem( jcbb, jcbb.getSelectedItem(), sb.toString() );