【问题标题】:Get all selected checkboxes in Java获取Java中所有选中的复选框
【发布时间】:2012-02-14 08:25:23
【问题描述】:

我有一个 Java 对话框,向用户显示了大约 15 个复选框。有没有办法一次获取所有选中复选框的名称?目前,我正在一一查看是否被选中,这不是一个花哨的解决方案。

我正在寻找类似于 Getting all selected checkboxes in an array 的东西,但后来在 Java 中

【问题讨论】:

  • 并非所有事情都必须是花哨的。
  • 确实如此。可能以后会添加或删除复选框,我不想每次都手动编码动作处理程序
  • 你说的是哪种复选框?复选框?你在一个servlet中吗?在 MVC 框架中?

标签: java swing checkbox


【解决方案1】:
List<JCheckBox> checkboxes = new ArrayList<JCheckBox>();
for( Component comp : panel.getComponents() ) {
   if( comp instanceof JCheckBox) checkboxes.add( (JCheckBox)comp );
}

这假定所有 JCheckBox 实例都是容器面板的直接子级。如果不是,那么您需要使用相同的逻辑递归访问面板的所有容器。现在,虽然您可以这样做,但通常最好在创建这些引用时将它们保存到列表中。然后,您可以轻松地遍历所有复选框,而无需执行上面的代码。如果您有嵌入式组件,最好让嵌入式组件对其拥有的复选框执行您想要的任何操作(而不是通过 getter 将它们从组件中拉出,这样您就可以以某种方式弄乱它们)。

【讨论】:

  • 另外,当您创建对话框时,您可以将复选框添加到 ArrayList&lt;JCheckBox&gt;。这样它们就不必是容器面板的直接子级。
  • @user949300 是的,我也在答案中描述了这个确切的方法。
  • 这似乎是一个更简单的解决方案。但是,我在 Netbeans 中使用可视化编辑器创建了复选框,有没有办法将内容添加到 Netbeans 自动生成的代码中?
  • 您可以修改 Netbeans 自动生成的代码。这样做可能会使再次使用可视化编辑器变得困难。我对 Netbeans 可视化编辑器不太熟悉,不知道它是如何工作的。如果它创建一个资源文件或生成代码,是否有一个 API 可以处理它可能生成的资源文件。都是未知数。
【解决方案2】:

当您将复选框添加到对话框时,还要在某种集合中保留引用。然后,当您想查看哪些已被检查时,您只需遍历集合并检查它们中的每一个的状态。您可以通过调用 getText 来获取名称。

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2016-11-06
    • 2011-04-19
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多