0

我想使用 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”?

4

1 回答 1

3

您可以为您的课程覆盖该toString方法Carta

@Override
public String toString() {
  return this.nombre; // assumes nombre is a string
}

但是,许多人(正确地)不赞成滥用该toString方法用于 GUI 显示目的。您可以改为创建自定义ListCellRenderer来为每个对象呈现您想要的文本。

于 2013-09-19T17:38:15.323 回答