1Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
368
368
EMPFEHLEN
-
Hi, ich habe nochmal eine Frage.
Ich habe eine Tabelle, in der ich MP3 Dateien anzeigen lassen will, also mit Titel,Interpret und so.
Das klappt eigentlich auch.
Doch wenn die Tabelle dann sichtbar wird, kommt die ganze Zeit so eine Exception.
Hier die Exception:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
Hier erst mal das Tablemodel: import java.io.*; import java.util.*; import javax.swing.table.*; import org.farng.mp3.*; import org.farng.mp3.id3.*; public class Listmodel extends AbstractTableModel { MusikPlayer m; ArrayList<File> lieder = new ArrayList<File>(); public Listmodel(MusikPlayer m) { this.m = m; addFile(new File("/home/kai/mp3/")); } public int getColumnCount() { return 4; } public int getRowCount() { return lieder.size(); } public Object getValueAt(int row, int col) { try { MP3File file = new MP3File(lieder.get(row)); AbstractID3v2 f = file.getID3v2Tag(); if(col==0) return f.getSongTitle(); if(col==1) return f.getLeadArtist(); if(col==2) return f.getAlbumTitle(); if(col==3) return f.getSongGenre(); } catch (Exception e) { e.printStackTrace(); } return lieder.get(row); } public String getColumnName(int col) { String header=""; if(col==0) header= "Titel"; if(col==1) header= "Interpret"; if(col==2) header= "Album"; if(col==3) header= "Genre"; return header; } public void addFile(File f) { System.out.println(f); if(f.isDirectory()) { File[] files = f.listFiles(); for(int i=0; i<files.length; i++) { addFile(files[i]); } } else { lieder.add(f); } } }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
java.lang.NullPointerException at Listmodel.getValueAt(Listmodel.java:33) at javax.swing.JTable.getValueAt(JTable.java:2652) at javax.swing.JTable.prepareRenderer(JTable.java:5666) at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2067) at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1969) at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1765) at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143) at javax.swing.JComponent.paintComponent(JComponent.java:758) at javax.swing.JComponent.paint(JComponent.java:1022) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paint(JComponent.java:1031) at javax.swing.JLayeredPane.paint(JLayeredPane.java:564) at javax.swing.JComponent.paintChildren(JComponent.java:859) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5111) at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:285) at javax.swing.RepaintManager.paint(RepaintManager.java:1132) at javax.swing.JComponent.paint(JComponent.java:1008) at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21) at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60) at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97) at java.awt.Container.paint(Container.java:1797) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:738) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:683) at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:663) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Wisst ihr woran das liegen könnte?
-
Naja, irgendwas ist null
Das Programm verrät dir ja, in welcher Zeile der Fehler auftritt. Es scheint als würde file.getID3v2Tag(); null zurückgeben und in dem Moment wo du darauf die Funktion f.getSongGenre(); aufrufst gibt's halt die Exception (vielleicht auch ein oder zwei Zeilen vorher, falls du noch ne Package-Beschriftung über dem Quellcode hast).
Fragt sich jetzt halt nur warum file.getID3v2Tag(); offenbar null zurückgibt. Aber die Klasse kennen wir ja nicht
-
ja, ich weiss schon das das scheinbar null ist.
Nur ich weiss nicht warum.
Denn, als ich eben diese addFile() Methode rausgenommen habe, und einfach im Konstrokter mehrere File Objekte der ArrayList hinzugefügt habe, hat es geklappt.
Deswegen weiß ich nicht warum es so nicht klappt.
-
Hmm ... dann bastel mal in der addFile()-Methode vor dem lieder.add ein System.out.println rein, damit du siehst, welche Lieder er wirklich hinzu fügt. Unter Windows würde ich drauf tippen, dass er mit den Verzeichnissen "." und ".." Probleme kriegt und sich da weghängt, aber unter Linux gibt's die ja meines Wissens nach nicht (wobei ich jetzt nicht weiß, ob die unter Windows in den Array mit reinkämen).
-
Ich habe da jetzt mal so ein System.out reingebaut, und der fügt genau diie Lieder rein, die ich wollte.
-
Also nochmal um das klarzustellen:
Deine Liederliste entspricht der, wo du das im Konstruktor als Array übergeben hast. Nur mit dem Unterschied, dass es im Konstruktor funktioniert und hier nicht?
Dann schau bitte nochmal in der Zeile vor der Exception wie groß deine Arraylist ist und ob die Variable row wirklich in diesem Bereich liegt (denk dran, row sollte (vermutlich) zwischen 0 und lieder.size()-1 liegen) ... ansonsten bin ich auch mit meinem Latein am Ende.
-
03.07.07 13:31 #7MeinerEiner_80 Tutorials.de Gastzugang
Hast du denn schonmal überprüft, ob die Datei denn einen Mp3v2 Tag besitzt?
file.hasID3v2Tag() sollte true liefern...
*grüssle*
MeinerEiner
-
oh, danke.
Die Lieder die ich eben reinladen wollte haben keine ID3v2.
Mit anderen geht's.
Danke.
Ähnliche Themen
-
TableModel
Von FrankBooth im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 22.09.08, 12:07 -
CellRenderer und TableModel
Von Wyatt im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 26.07.07, 03:03 -
Frage zum TableModel
Von floggie im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 01.08.06, 10:52 -
Probleme mit TableModel
Von Athro im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 19.04.06, 09:31 -
Problem mit TableSorter und TableModel
Von Juckie im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 07.04.04, 10:41





Zitieren
Login





