Java 限制所选复选框的数量

Java 限制所选复选框的数量,java,swing,user-interface,checkbox,jcheckbox,Java,Swing,User Interface,Checkbox,Jcheckbox,我正在编写一个Java应用程序,其中有多个项目可供测试。 然而,由于硬件的限制,我只能并行测试4个设备。 一般来说,我想知道如何让Java将所选项目的数量限制在四个,而不管选择了哪一个项目? 我正在阅读Java文档,似乎找不到答案 我对Java相当陌生,所以请原谅我的无知。 我只想知道从哪里/如何开始 如何限制Java中所选复选框的数量?我将创建一个全局变量,用于保存已启动设备的数量 单击复选框时,在其事件处理程序中,如果选中,则将其添加到变量,如果未选中,则将其减去 当然,在添加之前,您会先检

我正在编写一个Java应用程序,其中有多个项目可供测试。 然而,由于硬件的限制,我只能并行测试4个设备。 一般来说,我想知道如何让Java将所选项目的数量限制在四个,而不管选择了哪一个项目? 我正在阅读Java文档,似乎找不到答案

我对Java相当陌生,所以请原谅我的无知。 我只想知道从哪里/如何开始


如何限制Java中所选复选框的数量?

我将创建一个全局变量,用于保存已启动设备的数量

单击复选框时,在其事件处理程序中,如果选中,则将其添加到变量,如果未选中,则将其减去


当然,在添加之前,您会先检查值是否小于5 0-4,然后再允许检查另一个值。

跟踪所有复选框。在侦听器中的stateChanged中添加对以下签入的调用:

循环并查询所有复选框的状态,并计算选中的数量。 如果复选框数等于或大于4,则再次循环检查所有复选框并禁用所有未选中的复选框。 否则,如果复选框数小于4,则启用所有复选框。 增加/减少复选框数量的全局计数似乎更有效,但在处理UI时,增益可以忽略不计。我想说,最好是防御性地编写代码,以避免角落案例和bug试图跟踪州信息,而不仅仅是轮询它


对于防御性编程,您还需要验证来自UI的输入,以检查复选框的数量是否小于或等于4。

如果使用Swing,请从创建JCheckBox[]数组开始,并用复选框填充它。然后创建ChangeListener和带有复选框数量的全局变量。将此侦听器添加到所有复选框中。在ChangeListener的stateChanged方法中,将全局变量增加或减少1。如果变量达到4,则使用setEnabledfalse禁用所有复选框,但选中的复选框除外。将变量从4减少到3时,将其设置为enabled

这是一个关于ChangeListener的好例子:

您的代码是什么?您正在使用哪些Java库?你在用秋千吗?GWT?纯AWT?还有别的吗?向我们显示创建复选框的代码,以及您试图或伪代码/逻辑来限制选中的数量。我可以在创建复选框的地方添加类文件吗?哦-抱歉-我正在使用swingJust copy粘贴代码,在创建复选框的地方粘贴代码以及附加到复选框的任何处理程序,例如ClickHandler。我可能会将其表示为两个带d'n'd的列表。之后将四个“硬件设备”从“系统”列表拖动到“测试”列表,忽略进一步的拖动事件。谢谢!我不知道为什么我没有想到这一点。所以让我问这个问题:事件处理程序是一个返回1或0的布尔值吗?那么事件处理程序可能是一个void或null类型。我在Java工作已经好几年了。这里的要点是,您正在关注点击。我知道java有一个addhandler,这意味着您可以轻松地为每个复选框分配相同的处理程序方法。事件处理程序是附加到单击事件的代码。因此,代码可以做三件事:1如果达到4,则禁用其他未选中的框以禁止更多检查;2如果存在,如果选中了4个以上的框,请禁用“运行测试”按钮3如果单击时选中了5个框,则以编程方式取消选择当前框。我应该选择第二条路。更清楚。seudo-code:onclick。。。{计数复选框;buttonRunTests.setEnabledcount我输入了一些代码:如果asus_prime_1.isSelected{JoptionPaneshowMessageDialognull,asus prime selected;}-当我试图运行我的应用程序并单击asus_prime_1时,什么都没有发生。我完全迷路了。。。