gpt4 book ai didi

java - JCheckbox 没有正确删除

转载 作者:行者123 更新时间:2023-11-30 06:18:02 24 4
gpt4 key购买 nike

今天早上我问了一个关于 JCheckbox 的问题,但被告知要缩小问题范围。经过几次调试,我有点缩小了问题的范围,但仍然无法解决。

似乎如果我选择一个 JCheckbox 和另一个不是后续的 JCheckbox,两者都会被删除。(例如,如果我在位置 0 和 2 或 3 选择 JCheckbox,两者都将被删除)。

但是,如果我选择了一个 JCheckbox,然后选择了后续的 JCheckbox,它只会删除第一个 JCheckbox。(例如,如果我在位置 0 和 1 选择 JCheckbox,只会删除位置 0 的 JCheckbox)。

我该如何解决这个问题?

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class CheckBoxTest extends JPanel {

JButton deleteBtn = new JButton("Delete!");
List<JCheckBox> checkboxes = new ArrayList<JCheckBox>();

public CheckBoxTest() {
setLayout(new GridLayout(0, 1));
for(int i = 0; i < 4; i++) {
checkboxes.add(new JCheckBox());
checkboxes.get(i).setText("text" + i);
add(checkboxes.get(i));
}
add(deleteBtn);
deleteBtn.addActionListener(new DeleteBtnActionPerformed());
}

public class DeleteBtnActionPerformed implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < checkboxes.size(); i++) {
if(checkboxes.get(i).isSelected()) {
System.out.println(checkboxes.get(i).getText() + " was deleted");
checkboxes.remove(i);
}
}
}
}

public static void main(String[]args) {
JFrame frame = new JFrame();
frame.add(new CheckBoxTest());
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setSize(400,250);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}

最佳答案

使用 Iterator 遍历您的复选框并同时删除一个元素。对于这样的用例,这是一个很好的做法。

for(Iterator<JCheckBox> iterator = checkboxes.iterator(); iterator.hasNext();) {
JCheckBox checkbox = iterator.next();
if (checkbox.isSelected()) {
System.out.println(checkbox.getText()
+ " was deleted");
iterator.remove();
}
}

关于java - JCheckbox 没有正确删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com