gpt4 book ai didi

java - 如果选择了某个 JCheckBox,如何删除它?

转载 作者:行者123 更新时间:2023-12-02 03:24:57 25 4
gpt4 key购买 nike

我正在为我的复选框使用Arraylist。我想在选择每个选项后将其删除,但我的代码没有执行预期的行为。我不知道为什么我的代码不起作用。

这里是:

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();
}

}

最佳答案

正如其他人在评论部分指出的那样,您不应该删除 ArrayList 的项目,因为您不会得到预期的结果。

您应该使用迭代器

示例:

Iterator<JCheckBox> iterator = sbname.iterator(); 
while(iterator.hasNext()) {
JCheckBox checkbox = iterator.next();
if (checkbox.isSelected()) {
iterator.remove();
//do some more stuff
}
}

关于java - 如果选择了某个 JCheckBox,如何删除它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39078393/

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