我有一个ArrayList<JCheckBox>,我想把它转换成ArrayList<String>。

3

我有一个ArrayList<JCheckBox>,我想把它转换成一个ArrayList<String>

首先,我从文件中获取所有标题,并将它们放入一个新的ArrayList中。然后,我创建一个包含StringArray中所有字符串的新JCheckBox数组。

ArrayList<String> titler = new ArrayList<String>();
titler.addAll(FileToArray.getName());

ArrayList<JCheckBox> filmListe = new ArrayList<JCheckBox>();
for(String titel:titler){
    filmListe.add(new JCheckBox(titel));
}
for(JCheckBox checkbox:filmListe){
    CenterCenter.add(checkbox);
}

这是我想要做的:首先,我将创建一个新的ArrayList(仍然是JCheckBox格式),其中包含所有选中的复选框。之后,我想以字符串格式将它们添加到一个新的ArrayList中。
主要问题已经用**标出:
ArrayList<JCheckBox> selectedBoxes = new ArrayList<JCheckBox>();

for(JCheckBox checkbox: filmListe){
    if (checkbox.isSelected()){
        selectedBoxes.add(checkbox);
    }

ArrayList<String> titlesArr = new ArrayList<String>();
for(JCheckBox titel:selectedBoxes){ 
    *titlesArr.add(titel);*
}

很多代码和文字解决一个小问题!但我非常感谢您的帮助! :)

1
我不确定我理解你想要实现什么。 - mre
3个回答

4
您不能将JCheckBox添加到List<String>中,因为类型JCheckBoxString不兼容。
我猜您想将复选框的文本添加到列表中,所以您必须手动检索它,使用:
titlesArr.add(titel.getText());

1

试试这个:

ArrayList<String> titlesArr = new ArrayList<String>();
for(JCheckBox checkbox: filmListe)
    if (checkbox.isSelected())
        titlesArr.add(checkbox.getText());

现在 titlesArr 包含了您想要的内容。


在对象上使用toString是一个非常糟糕的想法,因为你依赖于它的实现,而这通常只应该用于调试。在您的情况下,在JCheckBox上调用toString将导致可怕的输出,如“javax.swing.JCheckBox [,0,0,0x0,invalid,alignmentX = 0.0,alignmentY = 0 ......” - BoffinBrain
修正了。能否在点踩之前提出建设性的评论呢? - Óscar López

1
假设复选框的标签与您最初在标题列表中使用的完全相同,只需使用复选框的getText方法(获取字符串标签)。 您不需要创建一个单独的已选复选框列表 - 只需在第一个循环内放置一个if块,如下所示:
    ArrayList<String> titlesArr = new ArrayList<String>(filmListe.size());

    for (JCheckBox checkbox : filmListe) {
        if (checkbox.isSelected()) {
            titlesArr.add(checkbox.getText());
        }
    }

非常感谢!我已经盯着这个程序看了太久了。 :) - Strammefar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接