OOP建议使用表示“状态名称”和“状态颜色”的特定对象。例如,此类可能如下所示:
class Item {
private String name;
private String color;
public Item(String name, String color) {
this.name = name;
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return name;
}
}
现在,您可以使用上述类的实例构建组合框。请看我的例子:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class SourceCodeProgram {
public static void main(String argv[]) throws Exception {
JComboBox<Item> comboBox = new JComboBox<Item>(new Item[] {
new Item("Major", "red"), new Item("Critical", "dark"),
new Item("Minor", "green") });
comboBox.addActionListener(new ActionListener() {
@SuppressWarnings("unchecked")
@Override
public void actionPerformed(ActionEvent e) {
JComboBox<Item> comboBox = (JComboBox<Item>) e.getSource();
Item item = (Item) comboBox.getSelectedItem();
System.out.println(item.getColor());
}
});
JFrame frame = new JFrame();
frame.add(comboBox);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
如您所见,我将颜色和名称绑定在一个类中。我创建了这个类的 3 个实例并将其传递给JComboBox<Item>
构造函数。
我们可以使用Map类来链接这些属性,但我认为特定类是最好的解决方案。