【发布时间】:2012-05-25 06:50:39
【问题描述】:
我在抓取 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]);
}
bw 是一个 bufferedWriter,listModel 是我制作的自定义列表模型。您可能会注意到我已经拆分了字符串,这是因为我想从每个列表行中提取两个不同的值,我只是完成了 setText (text + "-" + text) 在我的 customCellRenderer 实现中,以便使我能够使用 "-" 字符作为分隔符来提取两个值
public class CustomCellRenderer extends JLabel
implements ListCellRenderer
{
JLabel left, right;
}
public CustomCellRenderer()
{
setOpaque(true);
}
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{
String leftData = ((String[])value)[0];
String rightData = ((String[])value)[1];
// simply will not function how i want it to.. GRR
leftData = String.format("%-50s", leftData);
setText(leftData + "- " + rightData);
if (isSelected)
{
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else
{
setBackground(list.getBackground());
setForeground(list.getForeground());
setBackground(list.getBackground());
setForeground(list.getForeground());
}
return this;
}
}
【问题讨论】:
-
如需尽快获得更好的帮助,请发布SSCCE。对数据进行硬编码。
-
看起来你正在写几个
String[]中的toString()-listModel中的元素是什么? -
@amaidment ive 添加了上面的 listModel 代码
标签: java swing file-io jlist defaultlistmodel