【发布时间】:2016-06-01 00:20:21
【问题描述】:
我有一个按钮,它只读取数据库表中的所有字段(从电影中选择 *),所以我使用 AbstractTableModel。第一个表在这个类中读取正常,但是如果我为其他表实现AbstractTableModel,我得到了 NPE。
这是我的代码TableModelForMovies:
package ua.movies.movie;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class TableModelForMovies extends AbstractTableModel {
private static final int NAME_COL = 0;
private static final int Genre_COL = 1;
private static final int Release_Date = 2;
private static final int Unique = 3;
private String[] columnNames = { "name", "genre",
"release" , "dgdggdf" };
private List<Movie> movies;
public TableModelForMovies(List<Movie> theMovie) {
movies = theMovie;
}
@Override
public int getRowCount() {
return movies.size(); <<- here is problem
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Movie tmpMovie = movies.get(rowIndex);
switch (columnIndex) {
case NAME_COL:
return tmpMovie.getMovieName();
case Genre_COL:
return tmpMovie.getGenre();
case Release_Date:
return tmpMovie.getRelease();
case Unique:
return tmpMovie.getUniqueKey();
default:
return tmpMovie.getMovieName();
}
}
}
我的按钮上的监听器
try {
String movieName = textFindField.getText();
List<Movie> employees = null;
if (movieName != null && movieName.trim().length() > 0) {
//employees = movieDao.search(lastName);
employees = movieDao.getAllMovies();
} else {
searchByName();
}
// create the model and update the "table"
TableModelForMovies model = new TableModelForMovies(employees);
tableMovies.setModel(model);
} catch (Exception exc) {
JOptionPane.showMessageDialog(AppMovies.this, "Error: " + exc, "Error", JOptionPane.ERROR_MESSAGE);
}
我真的不明白我为什么会得到 NPE。因为我有二等舱,它也扩展了AbstractTableModel,没有任何错误,NPE就在这里。
【问题讨论】:
-
如果没有电影名称,员工对象会怎样?
-
@paisanco ,是的,我忘了调用一个方法,它会输出我们所有的表,在另一种情况下,我们可以通过名称找到,但是 TableModel 类中的 NPE
-
1) 源代码中的一个空白行是永远需要的。
{之后或}之前的空行通常也是多余的。 2) 全部小写的单词难以阅读,例如试图听某人喃喃自语。请在句子的开头使用大写字母来表示单词 I,以及像ArrayList或 Oracle 这样的专有名称。 3) 为了尽快获得更好的帮助,请发布minimal reproducible example 或Short, Self Contained, Correct Example。硬编码一些数据来替换数据库。
标签: java swing jdbc nullpointerexception