从对象中获取值并添加到 jcombobox
get value from object and add in jcombobox
对你来说是美好的一天
我有 jcombobox 一个对象从数据库中填充它,它可以很好地使用这段代码:
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= 国家{id=4, name="USA"}}
类似于对象 toString() 格式
如何从 pruCompany 对象中获取 getName() 并在组合框中仅显示名称而不更改模型中的 toString() 方法 class
无论如何请
最诚挚的问候和祝福
你的问题是因为 JComboBox 使用了 toString() 方法
其成员创建 GUI 文本输出。
所以你必须覆盖 PruCompany class 中的 toString() 方法,如果你
想快速改变这种行为。
如果你有更多的时间或者toString()方法
PruCompany 真的很重要,你可以实现一个助手 class
并覆盖它的 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;
}
}
另一种方法是创建自定义渲染器以显示添加到 ComboBoxModel 的对象中的特定 属性。
Combo Box With Custom Render 举例说明如何创建自定义渲染器。
大多数人在创建自定义渲染器时忘记实现自定义 KeySelectionManager
,这样项目的选择也可以通过键盘而不仅仅是鼠标来完成。上面 link 中使用的渲染器也支持此功能。
对你来说是美好的一天 我有 jcombobox 一个对象从数据库中填充它,它可以很好地使用这段代码:
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= 国家{id=4, name="USA"}}
类似于对象 toString() 格式
如何从 pruCompany 对象中获取 getName() 并在组合框中仅显示名称而不更改模型中的 toString() 方法 class 无论如何请 最诚挚的问候和祝福
你的问题是因为 JComboBox 使用了 toString() 方法 其成员创建 GUI 文本输出。
所以你必须覆盖 PruCompany class 中的 toString() 方法,如果你 想快速改变这种行为。
如果你有更多的时间或者toString()方法 PruCompany 真的很重要,你可以实现一个助手 class 并覆盖它的 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;
}
}
另一种方法是创建自定义渲染器以显示添加到 ComboBoxModel 的对象中的特定 属性。
Combo Box With Custom Render 举例说明如何创建自定义渲染器。
大多数人在创建自定义渲染器时忘记实现自定义 KeySelectionManager
,这样项目的选择也可以通过键盘而不仅仅是鼠标来完成。上面 link 中使用的渲染器也支持此功能。