Ich habe eine Schaltfläche, die nur alle Felder aus Datenbanktabellen lesen (wählen Sie * aus Filmen), also verwende ich AbstractTableModel
. Erste Tabelle gelesen OK mit dieser Klasse, aber wenn ich AbstractTableModel
für andere Tabelle implementieren, habe ich NPE.NullPointerException in AbstractTableModel getRowCount
Hier ist mein Code 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();
}
}
}
und Zuhörer auf meine Taste
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);
}
Ich verstehe wirklich nicht, warum ich NPE bekam. Weil ich zweite Klasse habe und es auch AbstractTableModel
ausdehnt und es keine Fehler gibt, NPE gerade hier.
Was mit den Mitarbeitern geschieht dagegen, wenn es keinen Film Name ist ? – paisanco
@paisanco, ja, ich habe vergessen, eine Methode aufzurufen, wird es alle unsere Tabelle ausgeben, in einem anderen Fall können wir nach Namen finden, aber NPE in der Klasse TableModel –
1) Eine einzige leere Zeile von Leerzeichen im Quellcode ist alles, was ist * jemals * benötigt. Leere Zeilen nach '{' oder vor '}' sind normalerweise redundant. 2) Kleingeschriebene Wörter sind schwer zu lesen, wie wenn man jemandem zuhört, der murmelt. Bitte verwenden Sie einen Großbuchstaben am Anfang von Sätzen, für das Wort I, und Eigennamen wie 'ArrayList' oder Oracle. 3) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. Codieren Sie einige Daten, um die DB zu ersetzen. –