这是我在这里的第一篇文章,以便提前道歉,如果这是可怕的......ListCellRenderer返回空指针
我试图从自定义类的列表中添加项目到使用定制ListCellRenderer一个JList。每个人都有各种各样的事情,我想添加到一行,正在对各列表中的一个新行:
public class MatchRecord {
private String player;
private Integer kills;
private Integer deaths;
private Integer assists;//getters + setters etc etc below}
private class GameStatistics{//this is the main class of the program
listModel = new DefaultListModel();
jList.setModel(listModel);
listModel.clear(); //get rid of any junk in the list before loading
recordJList.setLayoutOrientation(JList.VERTICAL);
//add the records to the JList
recordJList.setCellRenderer(new RecordListRenderer());
List<MatchRecord> list = new ArrayList();
list.addAll(recordSet); //recordSet is a Set<MatchRecord> which has been previously loaded from file
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i).getPlayer()); //this is NOT NULL!
listModel.addElement(list.get(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}
我减少列表的内容以确保它不为空,但上面突出显示的行将返回空指针。我对Java的认识仍然有限,所以任何(简单!)帮助都将不胜感激。
你真快。 +1 – 2013-05-09 21:03:15
谢谢,这很快!空指针错误不再,但现在JList显示为空? – ms813 2013-05-09 21:10:58
我已经回答了我自己的问题 - 我错过了一个添加(标签[i]);线。谢谢你的帮助! – ms813 2013-05-09 22:15:07