Java 如何在JComboBox中正确呈现我自己的类?
我想使用DefaultComboxModel填充JComboBoxJava 如何在JComboBox中正确呈现我自己的类?,java,swing,class,jcombobox,Java,Swing,Class,Jcombobox,我想使用DefaultComboxModel填充JComboBox static JComboBox<Carta> cmb_cartas; static DefaultComboBoxModel<Carta> mdl_cartas; 静态JComboBox cmb_cartas; 静态默认组合框模型mdl_cartas; 我用我自己的类“Carta”的ArrayList填充DefaultComboxModel ArrayList cartas=conOAD.getCa
static JComboBox<Carta> cmb_cartas;
static DefaultComboBoxModel<Carta> mdl_cartas;
静态JComboBox cmb_cartas;
静态默认组合框模型mdl_cartas;
我用我自己的类“Carta”的ArrayList填充DefaultComboxModel
ArrayList cartas=conOAD.getCartasPorAgregar(idconcento);
mdl_cartas=新的DefaultComboxModel();
对于(int i=0;i
组合框已正确填充,但问题是选项的文本显示为:“modelos。Carta@3e7e084e"
如何将文本设置为我的类“Carta”的属性“nombre”?您可以为您的
Carta
类重写toString
方法
@Override
public String toString() {
return this.nombre; // assumes nombre is a string
}
然而,许多人(正确地)不赞成滥用
toString
方法进行GUI显示。您可以创建一个自定义来呈现每个对象所需的文本。您可以覆盖Carta
类的toString
方法
@Override
public String toString() {
return this.nombre; // assumes nombre is a string
}
然而,许多人(正确地)不赞成滥用
toString
方法进行GUI显示。您可以创建一个自定义的渲染器来渲染每个对象所需的文本。更灵活的方法是实现一个ListCellRenderer
,并将其设置为组合框。“flexible”的意思是,它可能会在一个渲染器中返回类的字符串形式,但在其他渲染器中会返回不同的内容。很抱歉,伙计,你刚才说了:出于显示目的的overridetoString
方法是不对的。这是一种简单但不正确的方法。更灵活的方法是实现一个ListCellRenderer
,并将其设置为组合框。“flexible”的意思是,它可能会在一个渲染器中返回类的字符串形式,但在其他渲染器中会返回不同的内容。很抱歉,伙计,你刚才说了:出于显示目的的overridetoString
方法是不对的。这是一个简单但不正确的方法。请避免使用匈牙利符号。您应该将combobox命名为cartasComboBox,并将模型命名为cartasModel。请避免使用匈牙利符号。您应该将combobox命名为cartasComboBox,并将模型命名为cartasModel。