【问题标题】:get value from object and add in jcombobox从对象中获取值并添加到 jcombobox
【发布时间】:2015-09-29 12:04:13
【问题描述】:

对你来说是美好的一天 我有 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= Country{id=4, name="USA"}}

like object toString() 格式

如何从 pruCompany 对象获取名称()并在组合框中仅显示名称而不更改模型类中的 toString()方法 请以任何方式 最好的问候和祝福

【问题讨论】:

    标签: java swing object jcombobox


    【解决方案1】:

    另一种方法是创建自定义渲染器以显示添加到 ComboBoxModel 的 Object 的特定属性。

    Combo Box With Custom Render 给出了如何创建自定义渲染器的示例。

    大多数人在创建自定义渲染器时会忘记实现自定义KeySelectionManager,以便也可以使用键盘而不是鼠标来选择项目。上述链接中使用的渲染器也支持此功能。

    【讨论】:

      【解决方案2】:

      您的问题来自 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;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-14
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 2012-02-25
        • 1970-01-01
        • 2012-10-08
        • 1970-01-01
        相关资源
        最近更新 更多