我有一个带有大约50个复选框的摆动,下面是3的示例代码。
"<Options xmlns='EDFPlugin.Plugin1'> was not expected."
这里我想循环遍历50个复选框,比如创建可用复选框的ArrayList并循环它们以检查哪个被选中。我无法理解如何创建复选框的ArrayList。
我提到Array of checkboxes in java,但我无法理解如何使用它?
请告诉我怎么做。
答案 0 :(得分:4)
创建ArrayList
JCheckBox
并按顺序添加它们。
然后,您可以使用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);
}
}
请注意,这是对您的代码的调整。这个例子尽可能接近你的代码,这样唯一的修改就应该反映出我想要解决的问题。
修改强>
由于您修改了问题并制作了新问题,因此这里是答案的第二部分:
并且在我的动作监听器中,我试图获取复选框的值,但是它将null作为名称,虽然我已经检查过,但输出显示为未选中。
修改您的代码以使用getText()
代替getName()
,例如:
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.out.println(checkBoxes.size());
for (int i = 0; i < checkBoxes.size(); i++) {
if (checkBoxes.get(i).isSelected()) {
System.out.println(" Checkbox " + i + " and " + checkBoxes.get(i).getText() + " is selected");
} else {
System.out.println(
" Checkbox " + i + " and " + checkBoxes.get(i).getText() + " is noooooot selected");
}
}
}
});
答案 1 :(得分:2)
要使用class Tag extends Model {
public function test($card_id){
return DB::SELECT(DB::RAW("SELECT name FROM tagmap tm, tags t WHERE t.id = tm.tag_id AND tm.card_id = :card_id"), ['card_id'=>$card_id]);
}
}
定义ArrayList
,请参阅以下示例:
CheckBoxes
使用标准方法将List<JCheckBox> chkBoxes = new ArrayList<JCheckBox>();
元素添加到JCheckBox
,例如:
ArrayList
对列表进行互动并使用JCheckBox chkBox1 = new JCheckBox();
chkBoxes.add(chkBox1);
方法JCheckBox
执行检查,如下所示:
#.isSelected()
答案 2 :(得分:0)
如果您需要从实际现有的框架/面板中获取所有复选框,您可以使用getComponents()
方法并逐个确定它是否为复选框(不确定是否为getComponents得到所有容器的支持)
例如:
Component[] comps = jScrollPane.getComponents();
ArrayList<JCheckBox> chckBoxes= new ArrayList<JCheckBox>();
for(Component comp : comps) {
if(comp instanceof JCheckBox) {
chckBoxes.add((JCheckBox) comp);
}
}