我想使用DefaultComboBoxModel填充JComboBox。
static JComboBox<Carta> cmb_cartas;
static DefaultComboBoxModel<Carta> mdl_cartas;
我用我自己的类“ Carta”的ArrayList填充DefaultComboBoxModel
ArrayList<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”?
最佳答案
您可以为toString
类覆盖Carta
方法。
@Override
public String toString() {
return this.nombre; // assumes nombre is a string
}
但是,许多人(正确地)不赞成出于GUI显示目的而滥用
toString
方法。您可以改为创建自定义ListCellRenderer
来呈现每个对象所需的文本。