我想使用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来呈现每个对象所需的文本。

09-25 20:40