Java JList/ListModel getElements不工作
我在获取ListModel的所有元素时遇到问题,当我尝试将字符串写入文件时,它们会输出如下内容:Java JList/ListModel getElements不工作,java,swing,file-io,jlist,defaultlistmodel,Java,Swing,File Io,Jlist,Defaultlistmodel,我在获取ListModel的所有元素时遇到问题,当我尝试将字符串写入文件时,它们会输出如下内容: [Ljava.lang.String;@79b43f[Ljava.lang.String;@79b43f 那么我做错了什么?以下是导致悲伤的代码: for (int i = 0; i < listModel.getSize(); i++) { String[] temp = listModel.getElementAt(i).toString().sp
[Ljava.lang.String;@79b43f[Ljava.lang.String;@79b43f
那么我做错了什么?以下是导致悲伤的代码:
for (int i = 0; i < listModel.getSize(); i++)
{
String[] temp = listModel.getElementAt(i).toString().split("-");
bw.write(temp[0]);
bw.write(temp[1]);
System.out.println(temp[0]);
}
在自定义列表模型中,listModel.getElementAt(i)似乎返回一个数组。如果您需要进一步帮助,请检查它并在此处发布您的自定义列表模型。您发布的不是
ListModel
-而是ListCellRenderer
。但这确实强化了这样一种观点,即JList
中的每个项目都是一个字符串[]
——例如,您正在将JList
中的每个值转换为一个字符串[]
,以进行渲染
String leftData = ((String[])value)[0];
String rightData = ((String[])value)[1];
似乎对ListModel
的填充位置存在一些混淆。您的帖子/代码表明您认为它正在ListCellRenderer
中填充-事实并非如此。它只是解决如何显示列表模型中已有的值
因此,一个快速解决方案可能是“给你带来悲伤的代码”:
String[] temp = (String[]) listModel.getElementAt(i);
bw.write(temp[0]);
bw.write(temp[1]);
然而,我并不鼓励这样做,因为您将有未经检查的类类型转换
而不是,我建议你首先考虑为什么用<代码> String []/COD>来填充<代码> ListMetry?e、 g.您是否按照以下方式构建
JList
:
JList myList = new JList(new String[]{"A","B"}, new String[]{"C","D"});
为了更快地获得更好的帮助,请发布一个。对数据进行硬编码。看起来您正在编写一对字符串[]的toString()
-listModel中的元素是什么?@AMAID我在上面添加了listModel代码我在原始问题中添加了自定义列表模型代码,它还返回一个字符串,然后我根据“-”字符将其拆分为一个数组,然而,值似乎是内存引用,而不是原始的stringim使用GUI编辑器创建列表,所以不,我现在不使用字符串创建它。。。然而,我只是尝试了演员阵容(字符串[]),它的工作!我发誓我以前试过,但是,是的,它有效:)
JList myList = new JList(new String[]{"A","B"}, new String[]{"C","D"});