我有一個按鈕,它只是讀取數據庫表中的所有字段(select * from movies),所以我使用AbstractTableModel
。第一個表用這個類閱讀OK,但是如果我爲其他表執行AbstractTableModel
,我得到了NPE。AbstractTableModel中的NullPointerException getRowCount
這裏是我的代碼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
@paisanco,是的,我忘了調用方法,它會輸出我們所有的表格,在另一種情況下,我們可以找到名稱,但NPE在類表模型 –
1)源代碼中的一個空白行空白全部是*永遠*需要。 '{'之後或'}'之前的空行通常也是多餘的。 2)以小寫字母輸入的單詞難以閱讀,比如試圖聽別人嘟someone。請在句子的開頭使用大寫字母,單詞I以及諸如'ArrayList'或Oracle的專有名稱。 3)爲了更快地獲得更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。硬編碼一些數據來替換數據庫。 –