Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListCellRenderer返回空指针_Java_Listcellrenderer - Fatal编程技术网

Java ListCellRenderer返回空指针

Java ListCellRenderer返回空指针,java,listcellrenderer,Java,Listcellrenderer,这是我在这里的第一篇帖子,所以如果它很可怕,请提前道歉 我正在尝试使用自定义ListCellRenderer将自定义类列表中的项添加到JList中。每一行都有我想添加到一行的各种内容,列表中的每一行都有一个新行: 我搜索列表的内容以确保它不是空的,但上面突出显示的行返回空指针 我对Java的知识仍然有限,因此非常感谢任何(简单!)的帮助。您可以初始化JLabel的数组: private JLabel[] labels = new JLabel[3]; 但您从不使用值填充此数组,因此当您想要

这是我在这里的第一篇帖子,所以如果它很可怕,请提前道歉

我正在尝试使用自定义ListCellRenderer将自定义类列表中的项添加到JList中。每一行都有我想添加到一行的各种内容,列表中的每一行都有一个新行:



我搜索列表的内容以确保它不是空的,但上面突出显示的行返回空指针


我对Java的知识仍然有限,因此非常感谢任何(简单!)的帮助。

您可以初始化
JLabel的数组:

private JLabel[] labels = new JLabel[3];
但您从不使用值填充此数组,因此当您想要访问它们时,它们将为
null
。使用
new JLabel()
设置每个元素,当您需要它们时,它们不会为
null

private JLabel[] labels = new JLabel[3];

这里是错误。您不需要初始化数组中的任何标签。

谢谢,太快了!空指针错误不再存在,但是现在JList显示为空?我已经回答了我自己的问题-我缺少一个add(labels[I]);线路。谢谢你的帮助!
    public class RecordListRenderer extends JPanel implements ListCellRenderer {

    private JLabel[] labels = new JLabel[3];

    public RecordListRenderer(){
        setOpaque(true);
        setLayout(new GridLayout(1, 4));

        //set font size + colour here
    }

    public Component getListCellRendererComponent(JList list,
            Object r,
            int index,
            boolean isSelected,
            boolean hasFocus){

        MatchRecord record = (MatchRecord) r;

        labels[0].setText(record.getPlayer()); //This line returns a null pointer
        labels[1].setText(record.getKills());
        labels[2].setText(record.getDeaths());
        labels[3].setText(record.getAssists());
    return this}
private JLabel[] labels = new JLabel[3];
private JLabel[] labels = new JLabel[3];