【发布时间】:2015-03-05 00:00:04
【问题描述】:
我需要知道如何从 java 中的 Component[ ] 数组中删除一个或多个项目。我没有看到任何快速完成此操作的方法。我必须使用 java Arrays做到了吗?
例如: 我有一个带有 30 个相同按钮的 Jpanel,我这样做:
Component[] comp = panel.getComponents();
我如何从 comp 中删除一个或所有项目?
如果我设置 comp=null; 还有更多它会清除所有项目吗?
我做什么:
我尝试按名称对 JPanel 的项目进行排序,我使用 Comparator 将所有项目添加到 comp,然后在对 comp 进行排序后,我将它们再次添加回面板(我排序的所有项目都是具有不同名称的相同按钮)是有最好的方法吗?
我使用的代码图片:
JButtons 也是应用程序的一部分(假设它们是具有右键单击功能和其他功能的轨道)
第 2 部分: 我的主要目标是重新分配 Array Components[] 使用的内存(有时它足够大,例如 150 mbs),并且在排序后我不再需要这些组件。我希望 Array Components[] 被分配java垃圾收集器的内存。
【问题讨论】:
-
Container#remove?如何维护自己的项目列表并自己删除它们?容器上可能还有其他组件... -
或者
Container#removeAll如果容器上没有其他东西...否则你需要一次做一个... -
你的意思是我必须做一个链表?
-
我同意@MadProgrammer。通过做你正在做的事情,你将你的程序逻辑与它的结构联系起来,并假设你永远不会再改变那个结构。您还增加了代码的复杂性并降低了它的可测试性。而是维护自己的收藏。
-
考虑以不同的方式做事。例如,创建
List<Action>并对其进行排序可能会更容易,然后将操作添加到稳定不变的 JButton 网格中。或者更好的是,将您的项目放在 JTable 中并使用其排序功能为您排序项目。