将 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);
}
}
我正在尝试将 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); } }