将JList复制到arrayList时出错

时间:2016-02-19 17:21:03

标签: java swing jlist

我正在尝试将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())?

由于

3 个答案:

答案 0 :(得分:3)

您正在复制JList的“toString”,它只是JList的“人类可读”表示。 您必须复制内容,例如通过迭代JList的模型:

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

答案 1 :(得分:3)

调用JList#toString()无法以任何方式工作,因为您似乎认为它可能有效。请打印一个电话,看它返回什么。相反,您将要获取JList的模型,然后通过getElement(...)方法获取它所拥有的每个元素。

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

答案 2 :(得分:0)

之前提到的(Hovercraft和Thierry)不起作用,即使使用.toString,也可以获得null输出。另外不要忘记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);


       }
}