Exception bei leerem JTable verhindern

Status
Nicht offen für weitere Antworten.

banshee

Bekanntes Mitglied
Hallo,

ich habe einen JTable in meiner Anwendung, der ein Datenmodell als Ergebnis aus einer Filteroperation übergeben bekommt und dieses dann per fireTableStructureChanged() anzeigen soll. Das funktioniert auch sehr gut, allerdings gibt es eine Exception, wenn das Datenmodell leer ist (was beim Filtern durchaus vorkommen kann, wenn eben kein Dateneintrag die Filterbedingung erfüllt). Genau genommen wird dann getColumnClass() meines TableModels aufgerufen, was auf ein getValueAt(0, spaltenNr) zurückführt und da natürlich ins Leere greift.
Weiß jemand, wie ich das verhindern kann?
 

tfa

Top Contributor
Genau genommen wird dann getColumnClass() meines TableModels aufgerufen, was auf ein getValueAt(0, spaltenNr) zurückführt und da natürlich ins Leere greift.
Das solltest du anders machen. Speichere deine Column-Klassen z.B. als Array in das Objekt, was im Konstruktor übergeben/angelegt/erzeugt wird.
 

banshee

Bekanntes Mitglied
hm, also ich hab es jetzt so gemacht:

Java:
class MyTableModel extends AbstractTableModel
	{
		private String[] columnNames;
		private Class[] classes;
		private Object[][] data;
		
		public int getColumnCount()
		{
			if(columnNames == null)
				return 0;
			
			return columnNames.length;
		}
		
		public int getRowCount()
		{
			if(data == null)
				return 0;
			
			return data.length;
		}
		
		public String getColumnName(int col)
		{
			return columnNames[col];
		}
		
		public Object getValueAt(int row, int col)
		{
			return data[row][col];
		}
		
		public Class getColumnClass(int c)
		{
			return classes[c];
		}
		
		public void setColumnNames(String[] columnNames)
		{
			this.columnNames = columnNames;
			
			classes = new Class[columnNames.length];
			classes[0] = int.class;
			int i = 1;
			while(!columnNames[i].equals("ObjectID"))
			{
				classes[i++] = String.class;
			}
			classes[i++] = int.class;
			for(; i < columnNames.length; i++)
			{
				classes[i] = float.class;
			}
		}
		
		public void setData(Object[][] data)
		{
			this.data = data;
		}
	}

und fireTabeStructureChanged() wirft anscheinend folgendes:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JTable.prepareRenderer(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JViewport.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Jemand eine Idee, was ich falsche mache?
 

banshee

Bekanntes Mitglied
Niemand eine Idee?

Gibt es denn eine Möglichkeit, den internen Code irgendwie zu debuggen, dass ich wenigstens nachschauen kann, was die Fehlermeldung verursacht?
 

banshee

Bekanntes Mitglied
Ja das ist klar, aber kann man die nicht irgendwoher bekommen? Ich habe beim googlen nämlich schon Exceptions gesehen, wo anstatt unknown source JTable.java oder ähnliches stand, was sehr danach klingt, dass derjenige das source file hatte (und das war keine Eigenimplementierung)
 

Schandro

Top Contributor
lad dir doch den Quellcode der Java SE API runter, gibts irgendwo auf der Homepage von Sun

oder du benutzt (z.b. in Eclipse) ein JRE zum ausführen in dem die Quellcodes bereits eingebunden sind, dann kannst du mit einen richtigen Debugger reingehen.
 

HannsW

Bekanntes Mitglied
Hallo,

ich habe einen JTable in meiner Anwendung, der ein Datenmodell als Ergebnis aus einer Filteroperation übergeben bekommt und dieses dann per fireTableStructureChanged() anzeigen soll.
Weiß jemand, wie ich das verhindern kann?

WIe wäre es denn, wenn DU das Ergebnis Deiner Anfrage überprüftest? Erhälst Du ein Ergebnis != null, bist Du fündig, und steigst in Dein tablemodel ein; ansonsten zeigst Du dem Anwender eine Meldung, daß nichts da ist, und überspringst die TabelRoutine,

Hanns
 

banshee

Bekanntes Mitglied
WIe wäre es denn, wenn DU das Ergebnis Deiner Anfrage überprüftest? Erhälst Du ein Ergebnis != null, bist Du fündig, und steigst in Dein tablemodel ein; ansonsten zeigst Du dem Anwender eine Meldung, daß nichts da ist, und überspringst die TabelRoutine,

Hanns

Das wäre natürlich eine Möglichkeit, wobei ich es intuitiver finden würde, dass man eben einfach einen leeren Table angezeigt bekommt, wenn man alles rausfiltert.

@Schandro: Woher weiß ich denn, in welchen JREs die Source Codes eingebunden sind? Z.z. benutze ich Version 1.6.0_16
 

HannsW

Bekanntes Mitglied
...wobei ich es intuitiver finden würde, dass man eben einfach einen leeren Table angezeigt bekommt, wenn man alles rausfiltert.

Dann zeig eben nen leeren Tabel an, statt des Hinweises, oder aber, DU gibst den Hinweis ( damit der User weiß, daß das Ergebnis tatsächlich leer ist: evtl sogar noch mal die Abfrage anzeigen?) , und zeigst dann Deinen leeren Table an.
 

banshee

Bekanntes Mitglied
boah ich bin so blöd. Ich hab natürlich anstatt Integer.class int.class eingetragen...

Solche Flüchtigkeitsfehler kosten immer am meisten Zeit. Ich kann mich noch gut an ein Praktikum aus dem letzten Semester erinnern, was innerhalb einer Woche abgegeben werden sollte. Ich habe da 99% des Codes in 5h fertiggestellt und unsere Gruppe hat die restlichen Tage damit verbracht, nach einem Fehler zu suchen, den wir dann ungelogen 30 mins vorm Testat morgens gefunden haben: Es war eine schließende Klammer falsch gesetzt -.-

Und ja, im Prinzip gebe ich Hinweis + Ergebnis aus, denn in einem Label wird immer angezeigt, wieviele Einträge gelöscht/gefiltert wurden.

Aber am Vorschlag von Schandro bin ich nach wie vor auch noch interessiert :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
N Kann ich die Nullpointer Exception umgehen Allgemeine Java-Themen 12
N A java Exception has occured Allgemeine Java-Themen 8
G javafx "class path" exception Allgemeine Java-Themen 5
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
tom.j85 Exception bei Abfrage von Ländercodes in API? Allgemeine Java-Themen 13
S Exception Allgemeine Java-Themen 5
LimDul Streams und Exception Allgemeine Java-Themen 8
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
S Wertbeschränkung Exception oder Anpassung? Allgemeine Java-Themen 4
D Nullpointer Exception Problem Allgemeine Java-Themen 5
Kirby.exe Nullpointer Exception bei Queue Allgemeine Java-Themen 5
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
S RMI Exception Allgemeine Java-Themen 0
S MSSQL Exception & Connection String Allgemeine Java-Themen 19
S Interface, generischer Datentyp, Exception? Allgemeine Java-Themen 3
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
M Klassen Serializable Exception Allgemeine Java-Themen 1
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
E Thread Exception Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
B Exception in Application init method Allgemeine Java-Themen 5
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
M javafx ComboBox- Nullpointer Exception Allgemeine Java-Themen 6
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
E Probleme mit nextInt() und Exception Allgemeine Java-Themen 35
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
0 Animiertes Gif anzeigen - NullPointer Exception Allgemeine Java-Themen 19
T Konstruktor löst exception aus Allgemeine Java-Themen 7
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
D Codeausführung bevor Exception abgeschlossen ist Allgemeine Java-Themen 11
T FileNotFound Exception Allgemeine Java-Themen 9
L Exception/Error auf JDialog umleiten Allgemeine Java-Themen 2
C Arithmetic Exception, obwohl nichts 0 ist Allgemeine Java-Themen 5
M A Java Exception has occured. Allgemeine Java-Themen 1
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
M Exception in thread "AWT-EventQueue-0" Allgemeine Java-Themen 6
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
E A Java Exception Has Occured Allgemeine Java-Themen 4
T Exception handling Allgemeine Java-Themen 7
P lazy loading exception Allgemeine Java-Themen 0
A Interpreter-Fehler OutOfMemory Exception mit Base64 decode Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
K Exception in thread "AWT-EventQueue-1" Allgemeine Java-Themen 2
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P Eigene Exception Klasse Allgemeine Java-Themen 7
N Java Interne Exception Allgemeine Java-Themen 4
B JUnit4 Exception-Test Allgemeine Java-Themen 4
127.0.0.1 SQL Exception, kein Driver Allgemeine Java-Themen 9
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
R ZIP FileSystem unter Windows wirft exception Allgemeine Java-Themen 7
H java.util.Timer und Funktion mit SQL Exception Allgemeine Java-Themen 5
Ollek Barcode mit Barcode4J erzeugen - Exception Allgemeine Java-Themen 4
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
E Eigene Exception Klasse erstellen Allgemeine Java-Themen 3
L Variablen IO Exception weil File angeblich nicht exisitert Allgemeine Java-Themen 10
T Exception versus Rückgabeparamter Allgemeine Java-Themen 26
S Exception enableDepthTest Allgemeine Java-Themen 7
M JAXB Reimport zu Hibernate DB -> Exception Allgemeine Java-Themen 3
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
S Null Pointer Exception bei BufferedReader Allgemeine Java-Themen 4
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
S Exception beim Schreiben des Dataset in XML Datei Allgemeine Java-Themen 8
M Webstart Exception trotz signierten JARs Allgemeine Java-Themen 3
E Interpreter-Fehler unbekannte Exception Allgemeine Java-Themen 12
B Komische Exception Allgemeine Java-Themen 4
U SwingWorker und Exception Allgemeine Java-Themen 3
B Nullpointer Exception in Array Allgemeine Java-Themen 15
G WebService Exception Allgemeine Java-Themen 3
M Best Practices Exception Handling für eigene library Allgemeine Java-Themen 8
G PermSpace Exception Allgemeine Java-Themen 2
S Invalid Chunk Exception Allgemeine Java-Themen 3
N URLClassLoader Exception Allgemeine Java-Themen 5
Apo Java Sound Mark/Reset Exception Allgemeine Java-Themen 14
M Exception ganz sehen Allgemeine Java-Themen 2
D Problem mit EasyMock und Exception Allgemeine Java-Themen 6
B Exception wird geworfen, ich darf sie aber nicht abfangen. Allgemeine Java-Themen 10
7 Exception wird nicht aufgefangen Allgemeine Java-Themen 8
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
L [Exception] RSA Verschlüsselung. Allgemeine Java-Themen 16
Final_Striker Exception bei neuem Look und Feel Allgemeine Java-Themen 2
N Exception beim auslesen einer JTable Allgemeine Java-Themen 5
nrg Stilistisch korrektes Exception Handling Allgemeine Java-Themen 4
F Geworfene Exception kommt nicht an Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben