如何在添加到ListModel后更改JList中的元素视图?

时间:2012-05-18 15:05:30

标签: java arrays swing jlist

在将数组(-s)添加到JList后,如何在ListModel中更改元素的视图。 需要:

2.0 11.0 1.0

有:

[D@198dfaf

我真的不想在添加之前和从JList获取之后使用“数组到字符串”转换。 有什么想法吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用ListCellRenderer来实现此目的。它允许您返回一个Component,它表示您在JList模型中放置的值。

默认的CellRenderer是DefaultListCellRenderer,它基本上是JLabel的扩展,具有所有正确的外观和放大器。感觉设置已经设置。因此,您可以扩展DefaultListCellRenderer并在返回值上设置数组文本。

答案 1 :(得分:0)

作为更改渲染器或覆盖toString()的替代方法,您可以考虑为添加到列表中的对象添加视图适配器。类似于这个简化示例的东西:

class ArrayListViewAdapter {
    Object[] list;

    public ArrayListViewAdapter(Object[] list){
        this.list = list;
    }

    @Override
    public String toString(){
        return StringUtils.join(list, " ");
    }
}

然后将项目添加到模型中:

model.addElement(new ArrayListViewAdapter(new Integer[]{1, 2, 3}));