将 JList 复制到 arrayList 时出错

Error copying a JList into an arrayList

我正在尝试将 JList 复制到数组列表中。

    ArrayList<String> aList= new ArrayList<String>();
    size= list.getModel().getSize(); //list is a JList defined elsewhere
    for(int i=0;i< size ;i++){
        aList.add(list.toString());
    }

但这好像不是复制内容,而是复制JList的属性。 输出:javax.swing.JList[,0,0,414x390,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=50331944,maximumSize=,minimumSize=,preferredSize=,fixedCellHeight=-1,fixedCellWidth=-1,horizontalScrollIncrement=-1,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],visibleRowCount=8,layoutOrientation=0]

如何改为阅读内容?有没有更简单的方法来做同样的事情(比如 toArray() )?

谢谢

您正在复制 JList 的 "toString",它只是 JList 的 "human readable" 表示。 您必须复制内容,例如通过迭代 JList 的模型:

ListModel model : list.getModel();
for (int i=0; i < model.getSize(); i++) {
  aList.add(model.getElementAt(i));
}

调用 JList#toString() 不能像您认为的那样有效。请打印它的一个调用以查看它的内容 returns。相反,您需要获取 JList 的模型,然后通过 getElement(...) 方法获取它包含的每个元素。

aList.add(list.getModel().getElement(i));

就像之前提到的(Hovercraft 和 Thierry)一样,即使使用 .toString 也不起作用,或者得到空输出。也别忘了 JList 来 javax.但是,如果不是任何事件,我建议使用它: JList的DefaultListModel,希望对你有帮助


import java.util.ArrayList;
import javax.swing.DefaultListModel;

public class Jlistinjarry {

    public static void main(String[] args) {
        // TODO Auto-generated method stub


        ArrayList xaList = new ArrayList();
        xaList.add("a");
        xaList.add("b");
        xaList.add("c");
        DefaultListModel model = new DefaultListModel();
        for(String s:xaList){
            model.addElement(s);
        }



         System.out.println( model);


       }
}