【问题标题】:Sorting groups of JMenuItems inside the same JMenu without sorting other JMenuItems对同一 JMenu 内的 JMenuItem 组进行排序,而不对其他 JMenuItem 进行排序
【发布时间】:2023-03-16 23:42:01
【问题描述】:

我正在开发的一个应用程序让用户可以建立与某些行业特定硬件的连接。可以保存这些连接(IP/主机耦合)并为其命名,还可以选择一个组属性,将保存的属于同一组的连接配对。

我现在有一个 JMenu,它为用户提供了与连接有关的各种选项。 JMenu的结构如下:

  1. 建立新的连接
  2. JS 分隔符
  3. 3 始终保持不变的标准修订连接条目
  4. JS分离器
  5. 已定义连接组的多个条目
  6. JS分离器
  7. 多个条目不属于一个组
  8. JS分离器
  9. 关闭连接

我需要的排序算法必须按字母顺序对 5. 中的分组条目和 7. 中的未分组条目进行排序,而不对任何其他菜单项进行排序。基本上,如何对 JMenu 中的 MenuItem 子组进行排序而不对所有子组进行排序?

【问题讨论】:

    标签: java swing sorting jmenu


    【解决方案1】:

    自从我使用 Swing 已经有一段时间了,但我假设您可以将每个菜单项文本的字符串存储在对象数组中,并在 for 循环中呈现菜单项。然后,您可以将 1、3 和 9 作为字符串存储在数组中,并将 5 和 7 作为字符串的 ArrayLists 存储在第一个数组中。然后,您可以在渲染时在第一个数组中的每个项目之间插入一个 JSeparator,使用 instanceof 关键字确保每个项目都是一个字符串。如果项目不是instanceof 字符串并且它是instanceof ArrayList,则可以为该内部ArrayList 中的每个字符串呈现一个菜单项。您可以使用 Collections.sort(mainArray[indexesOfSubarrays]) 按字母顺序对每个内部 ArrayList 中的项目进行排序。

    【讨论】:

    • 嗯,由于数据的动态特性,我不确定我是否可以直接实现这个想法,但这可能是构建有效解决方案的良好起点!我可能必须先填充一个 ArrayList,一旦它完全建成,就将它转换为一个数组。希望有一个不那么“hack-y”的解决方案,但已经怀疑这样的解决方案可能是一个哈哈。无论如何,感谢编辑的标签!
    • @yur 不客气!您绝对可以将 ArrayList 用于 5 和 7,并且主数组仍然可以是一个数组。对整个事情使用 ArrayList 也可以。在这种情况下,您可以将字符串作为代表“在此处插入 JSeparator”的分隔符。然后,您可以通过将它们添加到新的 ArrayList 并对其进行排序来对分隔符之间的项目进行排序。
    • 也是个好主意!我会去尝试一些东西,如果我想出一些对我的数据不太具体的东西,我会用我的算法报告!
    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2013-12-19
    • 2013-11-29
    相关资源
    最近更新 更多