编写自定义ListCellRenderer

时间:2013-09-19 13:43:10

标签: java swing jlist defaultlistmodel listcellrenderer

我想写一个自定义的ListCellRenderer。

只有与默认值不同的是它不会显示value.toString()的返回值,而是显示value.myOwnCustomMethodThatReturnsString()的eturn值。

最简单的方法是什么?

这个类已经实现了ListCellRenderer,我有:

public Component getListCellRendererComponent(JList<? extends Chapter> list,
        Chapter value, int index, boolean isSelected, boolean cellHasFocus)
{
    return null;
}

我只是不知道括号之间放什么......

1 个答案:

答案 0 :(得分:2)

最简单的方法是:

public class MyRenderer extends DefaultListCellRenderer {

    @Override
    public Component getListCellRendererComponent(JList<? extends Chapter> list, Chapter value, int index, boolean isSelected, boolean cellHasFocus)
    {
       Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);

       if (c instanceof Jlabel) { // it would work because DefaultListCellRenderer usually returns instance of JLabel
           ((JLabel)c).setText(value.myOwnCustomMethodThatReturnsString()); 
       }

       return c;
    }
}