是否可以更改Java Swing jList中项目的名称*显示*?

bla*_*ace 11 java swing rename jlist defaultlistmodel

我有一个使用DefaultListModel的jList,我使用从列表中获取的对象填充它(上下文:对象是ABM系统中的一种代理).

是否可以更改为jList中的对象显示的名称?我一直没能找到任何东西......

bas*_*ero 10

如果要查看的信息(而不是toString()spits out)包含在对象本身中,最直接的"Swing"方法是通过使用ListCellRenderer.可以将ListCellRenderer(任何CellRenderer)视为用于绘制列表中每个对象的橡皮图章.传入对象,设置组件,组件绘制对象,然后移动到下一个对象.CellRenderer永远不会有任何状态.

考虑这个例子:

// Extend DefaultListCellRenderer, takes care of most of the work for you
public class ExampleListCellRenderer extends DefaultListCellRenderer
{
    public Component getListCellRendererComponent(
        JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {
        // I know DefaultListCellRenderer always returns a JLabel
        // super setups up all the defaults
        JLabel label = (JLabel)super.getListCellRendererComponent(list, value, index, isSelect, cellHasFocus);

        // "value" is whatever object you put into the list, you can use it however you want here

        // I'm going to prefix the label text to demonstrate the point

       label.setText("PRE:" + label.getText());

       return label;

    }
}

// Some time later...

JList list = new JList();
list.setCellRenderer(new ExampleListCellRenderer());
Run Code Online (Sandbox Code Playgroud)