java - 获取jpanels的arraylist中某个容器的索引号

标签 java swing arraylist jpanel

我想知道 ArrayList 是否有一种类似于 indexOf() 的方法,可以告诉我特定容器的元素编号是多少。

假设我有一个包含字符串的 ArrayList:

ArrayList<String> stringHolder = new ArrayList<>();

如果我正在查找包含“example”的字符串的元素编号,我只需调用:

stringHolder.indexOf("example");

找到我的答案。

如何使用 JPanel 做到这一点?特别是如果所有容器实际上都是相同的。我需要能够通过按容器内的按钮从其父面板中删除特定容器。操作监听器将从面板中删除容器。但是,我需要知道该特定容器的元素编号。 TIA。

最佳答案

要查找容器中保存的组件的“索引”,您需要通过调用 getComponents() 从容器中获取组件数组。 ,然后要找到您想要的组件,您需要遍历数组,测试是否获得了您想要的内容。

请注意,您可以使用静态 Arrays.binarySearch(Object[] a, Object key)方法来实现此目的,但还要注意,为了使其正常工作,您的 JPanel 应该重写 equals 和 hashCode 以便此方法能够工作,以便 key 将与感兴趣的 JPanel 匹配,而不必已经拥有感兴趣的组件手。

请注意,以这种方式获取对组件的引用相当“笨拙”,这意味着它有可能导致脆弱的程序,比您想要的更容易形成错误。最好采用其他更简洁的方式来获取引用,例如将关键组件放在 ArrayList 或 Map 中。

<小时/>

编辑:对于您的程序,您已经拥有对单击的 JPanel 的引用。由于 JCheckBox 由该 JPanel 持有,因此您可以通过其监听器的 getSource() 获取对 JCheckBox 的引用。方法,然后通过调用 getParent() 获取对其“父”容器 JPanel 的引用在 JCheckBox 上。

关于java - 获取jpanels的arraylist中某个容器的索引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44252593/

相关文章:

java - 如何在 ArrayList 内的对象内创建日历对象

java - 排除在 Hibernate 对象中加载特定属性

java - Android 选项卡被点击

java - 创建一个二维面板数组,每个面板根据之前设计的类绘制自己的形状

java - 如何将对象数组传递给按钮?

java - 在 Java 的 Arraylist 中创建 Arraylist

java - 如何实现用于过滤组合查看器中的元素的文本字段

java - 导入的java文件没有被调用

java - 在数据集映射结束之前我无法看到 JFrame 组件。为什么?

java - 寻求 map 到 map 转换的优化建议