我正在开发我的第一个(非常基础的)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?***
}
我知道我错过了很多,但只是朝着正确的方向推进会有所帮助。我一直在搜索书籍和网络,并找到了很多不同的答案,但我不能应用它们。我是否将StringBuilder输出到文本文件并加载?或者构建一个数组如何使用这两组数据?还是完全不同的东西?
感谢您的帮助。
答案 0 :(得分:0)
您可以使用addItem
方法(doc):
if (ae.getActionCommand().equals("Save")) { //user hits the Save button
String toAdd = (String) macTF.getText(); //get data from textfield
jcbb.addItem(toAdd); //add String to the combo box
}
另外你会遇到问题:
String comps[] = {Computer 1, Computer 2, Computer 3}; //array for JComboBox
jcbb = new JComboBox<String>(comps); //create JComboBox
应该是:
String comps[] = {"Computer 1", "Computer 2", "Computer 3"}; //array for JComboBox
jcbb = new JComboBox(comps); //create JComboBox
答案 1 :(得分:0)
JComboBox#addItem
允许您将项目添加到组合框,或JComboBox#insertItemAt
如果要插入某个索引JComboBox#removeItem
允许您删除项目。所以可能的解决方案如下,但缺点是由于元素的添加/删除和选择的变化,它会产生大量事件。但是,这就是您要寻找的行为
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() );
注意:代码只是在这里输入,可能包含很小的语法错误