我正在使用Eclipse和WindowBuilder。在我的JComboBox中,可以多次显示名称。但问题是我无法选择具有相同名称的第二个项目。它总是选择列表中的第一个。我无法使用第二个。
我无法发布图片,因此这里是指向它的链接:http://oi59.tinypic.com/15rmbcz.jpg
我使用的代码例如删除列表中的名称如下:
for(Element customer : dList){
String name = customer.getChildText("name");
if(GuiMain.item.equals(name)){
String birthday = customer.getChildText("birthday")
if(bDay.equals(birthday)){
customer.getParent().removeContent(customer);
document.setContent(root);
XMLOutputter xmlOutput = new XMLOutputter();
xmlOutput.setFormat(Format.getPrettyFormat());
xmlOutput.output(document, new FileOutputStream("SAVE//File.xml"));
continue;
}
}
}
有没有解决方案?
答案 0 :(得分:0)
您发布的代码不足以让我弄清楚JComboBox
中的内容以及您如何修改它。但是,这里有一段代码可以帮助您:
private static class MyString {
private static AtomicInteger objectCount = new AtomicInteger(0);
private final String string;
private final int id;
public MyString(String string) {
this.string = string;
this.id = objectCount.getAndIncrement();
}
@Override
public String toString() {
return string;
}
}
public static void main(String[] args) {
Vector<MyString> vector = new Vector<>();
vector.add(new MyString("One"));
vector.add(new MyString("Two"));
vector.add(new MyString("Two"));;
vector.add(new MyString("Three"));
JComboBox<MyString> box = new JComboBox<>(vector);
box.addItemListener(e -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
MyString item = (MyString) e.getItem();
System.out.println(String.format("Selected: %s (id=%s)", item, item.id));
}
});
JFrame frame = new JFrame();
frame.setContentPane(box);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
请注意MyString
不会覆盖equals
方法,这意味着如果它们是同一个实例,则两个对象相等(因此id
实际上是多余的,它是只是打印输出)。