final JComboBox pruCompanyCB = new JComboBox(DAOFactory.getInstance()
.getPruComanyDAOImpl().findAll().toArray());
pruCompanyCB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JComboBox comboBox = (JComboBox) arg0.getSource();
PruCompany pruCompany = (PruCompany) comboBox.getSelectedItem();
CRSevice.getInstance().getPruCompanySrv().setPruCompany(pruCompany);
并使用下一个代码来选择
car.setPruCompany((PruCompany) pruCompanyCB.getSelectedItem());
但是在gui中,组合框中的项目看起来像
PruCompany {id = 1,country = Country {id = 4,name =“USA”}}
喜欢对象toString()格式
来自pruCompany对象的getName()如何在combobox中显示名称而不更改模型类中的toString()方法 任何方式请 最好的问候和祝愿
答案 0 :(得分:1)
您的问题来自JComboBox使用toString()方法的事实 其成员创建GUI文本输出。
所以你必须覆盖PruCompany类中的toString()方法 想快速改变这种行为。
如果你有更多的时间或toString()方法 PruCompany非常重要,你可以实现一个帮助类 并覆盖其toString()方法。
此ComboItem的label属性将显示在GUI上, 但您必须使用ComboItem对象数组创建JComboBox 实现这种效果。
有关详细信息,请查看there。
public class ComboItem {
private String value;
private String label;
public ComboItem(String value, String label) {
this.value = value;
this.label = label;
}
public String getValue() {
return this.value;
}
public String getLabel() {
return this.label;
}
@Override
public String toString() {
return label;
}
}
答案 1 :(得分:1)
另一种方法是创建一个自定义渲染器,以显示添加到ComboBoxModel的Object中的特定属性。
Combo Box With Custom Render给出了如何创建自定义渲染器的示例。
创建自定义渲染器时,大多数人忘记实现自定义KeySelectionManager
,因此也可以使用键盘而不仅仅是鼠标来选择项目。上述链接中使用的渲染器也支持此功能。