Hallo, ich habe ein Problem mit meinem jTree.
Er ist so programmiert, das er wenn ein node selektiert wird
er aus einer Datei Daten holt und dann die Leafs anfügen soll.
jedoch bekomme ich eine Exception.
Ich vermute das es daran liegt das Swing nicht Thread sicher ist.
Allerdings habe ich es schon mit den Methoden invokeLater etc. probiert.
Leider ohne Erfolg.
Weiß nicht mehr weiter und suche schon seit über einer Woche.
Ich hoffe es kann mir jemand helfen.
Der Quellcode im Event ist folgender:
private JTree getJTree(String verzeichnis) {
if (jTree == null) {
try {
jTree = new JTree(daten.getTree(verzeichnis));
jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
public void valueChanged(javax.swing.event.TreeSelectionEvent e) {
EventQueue.invokeLater( new Runnable() {
public void run() {
jTree.setModel(daten.getTreeWithNodeAt(verzeichnispfad + jTree.getSelectionPath().getPathComponent(1).toString()));
}
});
if(radioButtonStatus == KOMPLETT){
try{
jTable.setModel(daten.getTable(verzeichnispfad + e.getPath().getPathComponent(1).toString(), e.getPath().getPathComponent(2).toString()));
}catch(java.lang.IllegalArgumentException e1){
jTable.setModel(new ViewerTableModel());
}
} else if(radioButtonStatus == RELEVANT){
try{
jTable.setModel(daten.getRelevantTable(verzeichnispfad + e.getPath().getPathComponent(1).toString(), e.getPath().getPathComponent(2).toString()));
}catch(java.lang.IllegalArgumentException e1){
jTable.setModel(new ViewerTableModel());
}
}
}
});
} catch (java.lang.Throwable e) {
// TODO: Something
}
}
return jTree;
}
Und es gibt folgende Fehlermeldung:
Exception in thread „AWT-EventQueue-0“ java.lang.NullPointerException
at XmlViewerGui$2.run(XmlViewerGui.java:172)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Hoffe auf eine Lösung.
Viele Grüße
Andreas