我正在尝试将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())?
由于
答案 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); } }