Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JComboBox中正确呈现我自己的类?_Java_Swing_Class_Jcombobox - Fatal编程技术网

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

Java 如何在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

我想使用DefaultComboxModel填充JComboBox

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”的意思是,它可能会在一个渲染器中返回类的字符串形式,但在其他渲染器中会返回不同的内容。很抱歉,伙计,你刚才说了:出于显示目的的override
toString
方法是不对的。这是一种简单但不正确的方法。更灵活的方法是实现一个
ListCellRenderer
,并将其设置为组合框。“flexible”的意思是,它可能会在一个渲染器中返回类的字符串形式,但在其他渲染器中会返回不同的内容。很抱歉,伙计,你刚才说了:出于显示目的的override
toString
方法是不对的。这是一个简单但不正确的方法。请避免使用匈牙利符号。您应该将combobox命名为cartasComboBox,并将模型命名为cartasModel。请避免使用匈牙利符号。您应该将combobox命名为cartasComboBox,并将模型命名为cartasModel。