Java - 如何使非字符串对象的 JComboBox 显示字符串名称?

2024-02-28

我想做JComboBox元件展示String名称,而不是参考文献。但是,我不知道这是如何做到的。

下面显示了我的代码:

public class Properties extends JPanel implements ItemListener {
    private static final long serialVersionUID = -8555733808183623384L;
    private static final Dimension SIZE = new Dimension(130, 80);
    private JComboBox<Category> tileCategory;

    public Properties() {
        tileCategory = new JComboBox<Category>();
        tileCategory.setPreferredSize(SIZE);
        tileCategory.addItemListener(this);

        this.setLayout(new GridLayout(16, 1));
        loadCategory();
    }

    private void loadCategory() {
        //Obtains a HashMap of Strings from somewhere else. All of this is constant, so they
        //aren't modified at runtime.
        HashMap<Integer, String> map = EditorConstants.getInstance().getCategoryList();

        DefaultComboBoxModel<Category> model = (DefaultComboBoxModel<Category>) this.tileCategory.getModel();
        for (int i = 0; i < map.size(); i++) {
            Category c = new Category();
            c.name = map.get(i + 1);
            model.addElement(c);
        }
        this.add(tileCategory);
    }
}

我唯一知道的是我通过了Category上课到JComboBox。下面显示了Category class:

public class Category {
    public String name;
}

就是这样。

我唯一的目标是获得Category.name成员变量显示在JComboBox下拉列表,其中矩形在图片中标记。

谁能告诉我这是如何完成的?提前致谢。


A JComboBox uses a ListCellRenderer允许您自定义值的呈现方式。

看一眼提供自定义渲染器 http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer更多细节

例如...

public class CategoryListCellRenderer extends DefaultListCellRenderer {

    @Override
    public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {

        if (value instanceof Category) {
            value = ((Category)value).name;
        }

        return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); //To change body of generated methods, choose Tools | Templates.

    }

}

然后你只需指定组合框的渲染

tileCategory.setRenderer(new CategoryListCellRenderer());

现在,话虽如此,这将阻止用户使用内置搜索功能的组合框。

为此,请检查带有自定义渲染器的组合框 http://tips4java.wordpress.com/2013/11/17/combo-box-with-custom-renderer/可能的解决方法。这是由我们自己的 camickr 创作的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java - 如何使非字符串对象的 JComboBox 显示字符串名称? 的相关文章

随机推荐

  • 比较表中的行对

    我可以在比较同一个表中的行的查询上使用一些补救帮助 我正在修改我们的代码以推送到 Postgres 并建立了一个测试床来使用我们的旧代码和新代码进行推送 行数很好 但这并不能告诉我数据是否相同 为此 我意识到我可以使用内置功能来获取行的哈希
  • 在 json 字符串化数组对象时排除对象属性

    嘿我有一个像这样的数组对象 public public private private properties instance 这里最外面的数组包含 A 类的对象 它有一些公共 props 一些私有 porps 它还包含一个包含 B 类对象
  • 为什么 .gitignore 不包含以 ! 为前缀的文件

    我的 gitignore 文件内容如下 build glucosia xcodeproj glucosia xcodeproj project pbxproj core plot framework build core plot fram
  • 由于某些许可证尚未被接受,无法安装以下 Android SDK 包

    我需要在我的 Android 项目中集成一个持续集成系统 我发现 CodeShip 是一个很好的选择 因此我创建并配置了一个项目来使用以下脚本编译我的 Android 应用程序 Install java 8 jdk switcher hom
  • 实体框架中的自引用/父子关系

    我读了很多程序员的帖子 其中涉及到无法确定相关操作的有效顺序 由于外键约束 模型要求或存储生成的值 可能会存在依赖关系 在实体框架中使用自引用关系时出现异常 我正在努力建立亲子关系 public class Category public
  • 在 mySQL 中插入带有特殊字符的 JSON 编码值失败

    我正在尝试使用 PDO 执行此查询 UPDATE categories SET keywords bg keyword1 u0431 u044a u043b u0433 u0430 u0440 u0441 u043a u0438 WHERE
  • 如何检测用户是否选择取消InputBox VBA Excel

    我有一个输入框要求用户输入日期 如果用户单击 取消 或关闭输入对话框而不是按 确定 如何让程序知道停止 就像是if str vbCancel then exit sub 目前 用户可以点击 确定 或 取消 但程序仍然运行 str Input
  • Pandas scatter_matrix - 绘制分类变量

    我正在查看 Kaggle 竞赛中著名的泰坦尼克号数据集 http www kaggle com c titanic gettingStarted data http www kaggle com c titanic gettingStart
  • 使用Mercurial (hg),如何只推送一个文件或一个目录?

    使用 Mercurial 我们可以使用以下命令提交一个文件 hg commit file rb 或 1 个文件夹 hg commit foldername 但是我们如何才能只推出 1 个文件或 1 个文件夹呢 整个项目可以使用 hg pus
  • Flutter:ClipRRect 与带有 BoxDecoration 的容器

    我知道 ClipRRect 有其他选项 例如自定义剪辑器 但如果我只需要一个简单的边界半径 性能上有什么区别吗 哪一款更值得推荐呢 如果您的目标是创建圆形边框 则必须仅在最后一种情况下使用剪裁器 此时容器可能无济于事 例如 图像可以在圆形边
  • Java servlet - 会话清理 (HttpServletRequest)

    关于 java servlet 的一般问题以及处理请求的最佳方法 如果我从远程服务器请求中调用 doGet 方法 protected void doGet HttpServletRequest request HttpServletResp
  • 学习 Javascript 与 jQuery

    我拿到了 Wrox Beginning JavaScript 3rd Edition 并想从头开始学习它 然后我的老板走过来说 何必呢 学习 jQuery 尽管我是一个新手 对 ASP net vb net 一些 C 和基本 HTML 的了
  • 如何在CRM 2011中从多对多实体关系中创建和删除数据?

    如何在crm 2011中从多对多实体关系中创建和删除数据 Code QueryExpression qry new QueryExpression qry EntityName entity1 entity2 qry ColumnSet n
  • 更新模型时如何更新counter_cache?

    我有一个简单的关系 class Item belongs to container counter cache gt true end class Container has many items end 假设我有两个容器 我创建一个项目并
  • x86 asm 中 NOT 指令的简单示例

    有人能解释一下 x86 汇编器中 NOT 指令的具体作用吗 在我所知道的编程语言中 NOT 用于检查特定状态是否不正确 例如 if Isset var 但在汇编器中 运算符似乎做了其他事情 我不明白操作数到底是做什么用的 有人可以用一个简单
  • 错误 TS1127:在 Angular 7 中运行 Karma 测试时出现无效字符

    我收到错误error TS1127 Invalid character在 Visual Studio Code 终端中 为 Angular 7 应用运行 Karma 测试时 命令行版本 7 3 9 I have 一份 Karma 测试规范在
  • Scapy:处理部分 TLS 段

    我正在尝试使用 Scapy 从 pcap 中提取 TLS 元数据 我能够成功解析数据包和单个消息 例如 client hello server hello 等及其字段 我遇到的问题是当 TLS 记录分布在多个 TCP 数据包 段时 这种情况
  • boost:序列化重构(加载)

    我正在使用 boost serialization 将数据结构保存到文件中 实际数据是类和子类的指针向量 然而 被序列化的类的构造函数将另一个实例化的类 Agent 作为参数 该类 Agent 是控制与模拟 API webots 通信的对象
  • 使用 linQ 和 lambda 表达式删除记录

    我想使用 linq lambda 表达式删除 sql 数据库的记录 我应该怎么办 这里 student 是我的表 db 是 edmx 文件的对象 public bool DeleteRecord int caurseID studentEn
  • Java - 如何使非字符串对象的 JComboBox 显示字符串名称?

    我想做JComboBox元件展示String名称 而不是参考文献 但是 我不知道这是如何做到的 下面显示了我的代码 public class Properties extends JPanel implements ItemListener