我有各种类别代表各种类型的节目类型(喜剧,戏剧等)。
我有一个文本文件,其中填充了' - '分隔值,这些值由名为处理的类读取,并将它们放入LinkedList。
我有另一个创建GUI的类 GUI_g 。它有3个JTable。一个用于列表,一个用于每个Channel。 (频道1和频道2)。 JTable listTable从链表中填充,每当用户点击一行时,文本字段的文本都会相应地更改。
我尝试了3个字段(标题,类型和持续时间)并且它有效,3个文本字段根据单击的行显示不同的文本。但是,当我添加所有需要的值时,会出现错误并且不填充任何字段。当我在 ProgramTableModel 的 case 中添加更多值时发生了此错误,但我看不出有什么问题。
以下是课程(主要使用的课程)。如果你需要别人告诉我,我会上传。
这是我得到的错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GUI_g$1.mouseClicked(GUI_g.java:160)
这是我收到错误的部分:
JTable mouseListener:
listTable.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
String title = listTable.getValueAt(row, column).toString();
String duration = listTable.getValueAt(row, column+1).toString();
String genre = listTable.getValueAt(row, column+2).toString();
String actor = listTable.getValueAt(row, column+3).toString();
String director = listTable.getValueAt(row, column+4).toString();
String rentable = listTable.getValueAt(row, column+5).toString();
String synopsis = listTable.getValueAt(row, column+6).toString();
txtTitle.setText(title);
txtDuration.setText(duration);
txtGenre.setText(genre);
txtActor.setText(actor);
txtDirector.setText(director);
if (synopsis == " ") {
txtSynopsis.setText("N/A");
}
txtSynopsis.setText(synopsis);
if (rentable == "false") {
rentCB.setEnabled(false);
}
else {
rentCB.setEnabled(true);
}
}
}
});
出于某种原因,概要没有在JTable中表示:
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ProgramTableModel extends AbstractTableModel
{
private List<Program> schedule;
public ProgramTableModel(List<Program> schedule)
{
this.schedule= schedule;
}
public int getColumnCount()
{
return 7;
}
public int getRowCount()
{
return schedule.size();
}
public Object getValueAt(int rowIndex, int columnIndex)
{
Program sData = schedule.get(rowIndex);
switch (columnIndex)
{
case 0: return sData.getTitle();
case 1: return sData.getDuration();
case 2: return sData.getCategory();
case 3: return sData.getActor();
case 4: return sData.getDirector();
case 5: return sData.getRentable();
case 6: return sData.getSynopsis();
default: return "Not Available.";
}
}
}
调试器特别指出第162行是问题所在。即:
String synopsis = listTable.getValueAt(row, column+6).toString();