Java 获取Swing中的复选框数
我有一个带有大约50个复选框的swing,下面是3的示例代码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
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
,尽管我已经检查了,然后按下了按钮,您已经修改了代码,并在这个问题的基础上提出了一个新问题。这不是你应该做的。如果你有一个新问题,提出一个新问题。编辑的目的是完善或显示问题的进展。现在,用户搜索与您相同的原始问题时,会发现一个无意义的答案。我对你的新问题有个答案。请发布一个新的,并回滚到它的原始范围