Java JList/ListModel getElements不工作

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

我在获取ListModel的所有元素时遇到问题,当我尝试将字符串写入文件时,它们会输出如下内容:

[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"});