Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取Swing中的复选框数_Java_Swing_Checkbox - Fatal编程技术网

Java 获取Swing中的复选框数

Java 获取Swing中的复选框数,java,swing,checkbox,Java,Swing,Checkbox,我有一个带有大约50个复选框的swing,下面是3的示例代码 JCheckBox checkboxOne = new JCheckBox("One"); JCheckBox checkboxTwo = new JCheckBox("Two"); JCheckBox checkboxThree = new JCheckBox("Three"); // add these check boxes to the container... // add an action listener Act

我有一个带有大约50个复选框的swing,下面是3的示例代码

JCheckBox checkboxOne = new JCheckBox("One");
JCheckBox checkboxTwo = new JCheckBox("Two");
JCheckBox checkboxThree = new JCheckBox("Three");


// add these check boxes to the container...

// add an action listener
ActionListener actionListener = new ActionHandler();
checkboxOne.addActionListener(actionListener);
checkboxTwo.addActionListener(actionListener);
checkboxThree.addActionListener(actionListener);
 
// code of the action listener class
 
class ActionHandler implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent event) {
        JCheckBox checkbox = (JCheckBox) event.getSource();
        if (checkbox == checkboxOne) {
            System.out.println("Checkbox #1 is clicked");
        } else if (checkbox == checkboxTwo) {
            System.out.println("Checkbox #2 is clicked");
        } else if (checkbox == checkboxThree) {
            System.out.println("Checkbox #3 is clicked");
        }
    }
}
在这里,我想循环50个复选框,比如创建一个可用复选框的ArrayList,并循环它们以检查哪个复选框被选中。我无法理解如何创建复选框的ArrayList

我提到过,但我不明白如何使用它


请告诉我如何做。

创建
JCheckBox
ArrayList
,并按顺序添加它们。 然后,可以使用
indexOf()
函数检索数字,如下所示:

public class TestFrame extends JFrame {

    public TestFrame() {
        setLayout(new GridLayout());
        setSize(500, 500);

        JCheckBox checkboxOne = new JCheckBox("One");
        JCheckBox checkboxTwo = new JCheckBox("Two");
        JCheckBox checkboxThree = new JCheckBox("Three");

        final ArrayList<JCheckBox> checkBoxes = new ArrayList<>();

        add(checkboxOne);
        add(checkboxTwo);
        add(checkboxThree);

        checkBoxes.add(checkboxOne);
        checkBoxes.add(checkboxTwo);
        checkBoxes.add(checkboxThree);

        ActionListener actionListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                JCheckBox checkbox = (JCheckBox) event.getSource();
                int index = checkBoxes.indexOf(checkbox) + 1;
                System.out.println("Checkbox #" + index + " is clicked");
            }
        };
        checkboxOne.addActionListener(actionListener);
        checkboxTwo.addActionListener(actionListener);
        checkboxThree.addActionListener(actionListener);
    }

    public static void main(String[] args) {
        TestFrame frame = new TestFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

创建
JCheckBox
ArrayList
,并按顺序添加它们。 然后,可以使用
indexOf()
函数检索数字,如下所示:

public class TestFrame extends JFrame {

    public TestFrame() {
        setLayout(new GridLayout());
        setSize(500, 500);

        JCheckBox checkboxOne = new JCheckBox("One");
        JCheckBox checkboxTwo = new JCheckBox("Two");
        JCheckBox checkboxThree = new JCheckBox("Three");

        final ArrayList<JCheckBox> checkBoxes = new ArrayList<>();

        add(checkboxOne);
        add(checkboxTwo);
        add(checkboxThree);

        checkBoxes.add(checkboxOne);
        checkBoxes.add(checkboxTwo);
        checkBoxes.add(checkboxThree);

        ActionListener actionListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                JCheckBox checkbox = (JCheckBox) event.getSource();
                int index = checkBoxes.indexOf(checkbox) + 1;
                System.out.println("Checkbox #" + index + " is clicked");
            }
        };
        checkboxOne.addActionListener(actionListener);
        checkboxTwo.addActionListener(actionListener);
        checkboxThree.addActionListener(actionListener);
    }

    public static void main(String[] args) {
        TestFrame frame = new TestFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

要使用
复选框定义
阵列列表
,请参考以下示例:

List<JCheckBox> chkBoxes = new ArrayList<JCheckBox>();
使用
JCheckBox
方法
#对列表进行交互检查并检查是否选中。isSelected()
如下所示:

for(JCheckBox chkBox : chkBoxes){
   chkBox.isSelected(); // do something with this!
}

要使用
复选框定义
阵列列表
,请参考以下示例:

List<JCheckBox> chkBoxes = new ArrayList<JCheckBox>();
使用
JCheckBox
方法
#对列表进行交互检查并检查是否选中。isSelected()
如下所示:

for(JCheckBox chkBox : chkBoxes){
   chkBox.isSelected(); // do something with this!
}
如果您需要从实际存在的框架/面板中获取所有复选框,可以使用
getComponents()
方法,如果是复选框,则可以逐个使用deside(不确定是否所有容器都支持getComponents)

例如:

Component[]comps=jScrollPane.getComponents();
ArrayList chckBoxes=新的ArrayList();
用于(组件组件:组件){
if(JCheckBox的组件实例){
添加((JCheckBox)comp);
}
}
(创建@)

如果需要从实际的现有框架/面板中获取所有复选框,可以使用
getComponents()
方法,如果是复选框,则可以逐个使用deside(不确定是否所有容器都支持getComponents)

例如:

Component[]comps=jScrollPane.getComponents();
ArrayList chckBoxes=新的ArrayList();
用于(组件组件:组件){
if(JCheckBox的组件实例){
添加((JCheckBox)comp);
}
}

(创建)

在你链接的答案中,你到底不明白什么?如果您成功地创建了arraylist,您可以简单地执行类似的操作来查看选中了哪些项:
for(JCheckBox cb:checkbox){If(cb.isSelected()){//What do If is selected}
Hi@LuxxMiner,我甚至尝试了我在(JCheckBox cb:checkbox){If(cb.isSelected()){System.out.println(“selected”)中使用的
}else{System.out.println(“no”);}
,但是我的控制台打印了三次
no
,尽管我已经检查了,然后按下了按钮,您已经修改了代码,并在这个问题的基础上提出了一个新问题。这不是你应该做的。如果你有一个新问题,提出一个新问题。编辑的目的是完善或显示问题的进展。现在,用户搜索与您相同的原始问题时,会发现一个无意义的答案。我对你的新问题有个答案。请发布一个新的,并将这个回滚到它的原始范围。在你链接到的答案中,你到底不明白什么?如果您成功地创建了arraylist,您可以简单地执行类似的操作来查看选中了哪些项:
for(JCheckBox cb:checkbox){If(cb.isSelected()){//What do If is selected}
Hi@LuxxMiner,我甚至尝试了我在(JCheckBox cb:checkbox){If(cb.isSelected()){System.out.println(“selected”)中使用的
}else{System.out.println(“no”);}
,但是我的控制台打印了三次
no
,尽管我已经检查了,然后按下了按钮,您已经修改了代码,并在这个问题的基础上提出了一个新问题。这不是你应该做的。如果你有一个新问题,提出一个新问题。编辑的目的是完善或显示问题的进展。现在,用户搜索与您相同的原始问题时,会发现一个无意义的答案。我对你的新问题有个答案。请发布一个新的,并回滚到它的原始范围