私は自分のチェックボックスにArraylistを使用しています。私はが選択されたらそれぞれを削除したいしかし、私のコードは期待された動作を実行していません。なぜ私のコードが動作していないのかわかりません。特定のJCheckBoxが選択されている場合、どのように削除できますか?
ここにある:
public class sampledsa extends JFrame implements ActionListener {
private JCheckBox CBname;
private ArrayList <JCheckBox> SBname = new ArrayList < >();
private JButton BTok;
public sampledsa() {
setVisible(true);
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(6, 1));
BTok = new JButton("OK");
for (int i = 0; i < 5; i++) {
CBname = new JCheckBox("Checkbox" + (i + 1));
SBname.add(CBname);
add(SBname.get(i));
}
add(BTok);
BTok.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(BTok)) {
for (int i = 0; i < SBname.size(); i++) {
if (SBname.get(i).isSelected()) {
SBname.remove(i);
}
}
JFrame f = new JFrame();
f.setVisible(true);
f.setSize(500, 400);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
for (int i = 0; i < SBname.size(); i++) {
f.add(SBname.get(i));
}
}
}
public static void main(String[] args) {
new sampledsa();
}
}
ちょっとしたヒント...クラスは大文字で始まり、変数は小文字で始まる必要があります。 – byxor
私は 'ArrayList'は同時の変更をサポートしていないと思います。つまり、反復処理中は要素を削除できません。 –
http://stackoverflow.com/jp/documentation/java/90/collections/2197/removing-items-from-a-list-within-a-loop#t=201608221144205738709 – rdonuk