如何在JComboBox中正确呈现我自己的类?

时间:2013-09-19 17:36:57

标签: java swing class jcombobox

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

1 个答案:

答案 0 :(得分:3)

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

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

然而,许多人(正确地)对于滥用toString方法进行GUI显示的目的不屑一顾。您可以改为创建自定义ListCellRenderer来为每个对象呈现所需的文本。