创建POJO它代表了Piece
的基本属性...
public class Piece {
private Image image;
private String name;
public Piece(String name, Image image) {
this.image = image;
this.name = name;
}
public Image getImage() {
return image;
}
public String getName() {
return name;
}
}
这些添加到您的JComboBox
Piece[] pieces = new Piece[]{
// Create what ever pieces you need...
}
DefaultComboBoxModel modelPlayer1 = new DefaultComboBoxModel(pieces);
DefaultComboBoxModel modelPlayer2 = new DefaultComboBoxModel(pieces);
JComboBox cbPlayer1 = new JComboBox(modelPlayer1);
JComboBox cbPlayer2 = new JComboBox(modelPlayer2);
你会发现,你可能需要为了在中显示Piece
的名称,某种ListCellRenderer
10,如...
public class PieceListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof Piece) {
value = ((Piece)value).getName();
}
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
}
然后渲染器适用于组合框
cbPlayer1.setRenderer(new PieceListCellRenderer());
cbPlayer2.setRenderer(new PieceListCellRenderer());
现在,你不需要关心indecies,因为你已经建立了两个模型从Pieces
相同的数组,你应该没有问题,简单地通过参看删除它们......
Piece p = (Piece)cbPlayer1.getSelectedItem();
((DefaultComboBoxModel)cbPlayer2.getModel()).removeElement(p);
见How to Use Combo Boxes更多细节
将这件作品的所有信息都汇总成某种类型的POJO,将其作为组合框内的项目,然后该索引无关紧要 – MadProgrammer