Я использую 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/documentation/java/90/collections/2197/removing-items-from-a-list-within-a-loop#t=201608221144205738709 – rdonuk