我有一个人 [ ]和三个人 (p1,p2,p3)。Person 类有两个属性name和email。
我想在一个 JComboBox 中添加 Person[] 的所有名称,在另一个 JComboBox 中添加所有电子邮件。
我使用了以下代码。
Person p1 = new Person("Smith", "smith@mail.com");
Person p2 = new Person("Tom", "tom@gmail.com");
Person p3 = new Person("John","john@mail.com");
Person[] per_arr = new Person[] { p1, p2, p3};
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JComboBox<String> combo1 = new JComboBox<String>();
JComboBox<String> combo2 = new JComboBox<String>();
for (Person p : per_arr) {
combo1.addItem(p.getName());
combo2.addItem(p.getEmail());
}
panel.add(combo1);
panel.add(combo2);
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
但我不想这样使用。我想使用相同型号的两个组合框。我尝试使用DefaultComboBoxModel和 Override getElementAt()方法,如下所示。
public class MyModel extends DefaultComboBoxModel<Object> {
public MyModel(Object[] items) {
super(items);
}
@Override
public Object getElementAt(int index) {
if (super.getElementAt(index) instanceof Person) {
return (Person)super.getElementAt(index);
} else {
return null;
}
}
}
上面的 ComboBoxModel 只给了我 Person 对象。
问题是如何使用相同的 ComboBoxModel在一个 JComboBox 中添加 Person[] 的所有名称以及在另一个 JComboBox 中添加所有电子邮件。