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