我想使用DefaultComboBoxModel填充JComboBox。
static JComboBox<Carta> cmb_cartas;
static DefaultComboBoxModel<Carta> mdl_cartas;
我使用我自己的类“Carta”
的ArrayList填充DefaultComboBoxModelArrayList<Carta> cartas = conOAD.getCartasPorAgregar(idConjunto);
mdl_cartas = new DefaultComboBoxModel<Carta>();
for(int i = 0; i < cartas.size(); i++) {
Carta carta = cartas.get(i);
mdl_cartas.addElement(carta);
}
cmb_cartas = new JComboBox<>(mdl_cartas);
组合框已正确填充,但问题是选项文本显示:“modelos.Carta@3e7e084e”
如何将文本设置为我的班级“Carta”的属性“nombre”?
答案 0 :(得分:3)
您可以覆盖toString
课程的Carta
方法。
@Override
public String toString() {
return this.nombre; // assumes nombre is a string
}
然而,许多人(正确地)对于滥用toString
方法进行GUI显示的目的不屑一顾。您可以改为创建自定义ListCellRenderer
来为每个对象呈现所需的文本。