Update JTree Verzeichnisse

Laren

Bekanntes Mitglied
Hi,

Ich hab ein Problem, ich hab einen Filetree geschrieben, der sich über einen Thread aktuallisieren soll. Das Problem ist aber, das wenn ich den Thread über
Java:
Thread.run
starte, das Programm sich aufhängt und erst wieder weiterläuft, wenn der Thread durch ist. Starte ich den Thread aber über
Java:
Thread.start
, dann aktuallisiert er nur ein paar Verzeichnisse. Was kann man da tun?:oops:

Java:
 public static void treeAktualMethode(File uebergabe, DefaultMutableTreeNode wurzel) {
      
    Aktual ak = new Aktual(uebergabe,wurzel);
    ak.start();
    //ak.run();
   }

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dateiuebersicht;

import java.io.File;
import javax.swing.tree.DefaultMutableTreeNode;

public class Aktual extends Thread {

    File uebergabe;
    DefaultMutableTreeNode wurzel;
    public static int zaehler = 0;

    public Aktual(File uebergabe, DefaultMutableTreeNode wurzel) {
        this.uebergabe = uebergabe;
        this.wurzel = wurzel;
    }

    @Override
    public void run() {
        treeAktualMethode(uebergabe, wurzel);
    }

    public static void treeAktualMethode(File uebergabe, DefaultMutableTreeNode wurzel) {


        File[] dateien = uebergabe.listFiles();
        if (dateien != null) {
            for (int i = 0; i < dateien.length; i++) {
                if (dateien[i].isDirectory()) {

                    DefaultMutableTreeNode n = new DefaultMutableTreeNode(dateien[i]);

                    wurzel.add(n);


                    treeAktualMethode(dateien[i], n);

                }

            }
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:

FArt

Top Contributor
Einen Thread startet man mit start. Ruf man run auf, wird lediglich diese Methode im aktuellen Thread ausgeführt.

Der Rest liegt an deiner Logik. Logging und/oder ein Debugger sollten dir hier helfen das Problem zu finden.

Ich empfehle für asynchrone Aktionen den ExecutorService, bevor man selber mit Threads hantiert.
 

Andi_CH

Top Contributor
Deine Methode run wird genau einmal aufgerufen - die führt einmal den Code der drin steht einmal aus und das ist bei dir kein loop - warum also sollte der seine Aufgabe wiederholen?
 
S

SlaterB

Gast
ob der Thread funktioniert oder nicht ist wenn überhaupt allein mit System.out.println() oder ähnlichem zu testen,

wenn du das Model eines JTrees in einer laufenden GUI-Anwendung änderst, ist das eine hochkomplexe Sache zu der man Jahre Fachwissen sammeln kann, naja fast ;) z.B. solche Artikel lesen:
Understanding the TreeModel
How to Use Trees (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

diese Methode von TreeModel dürfte für dich interessant sein bzw. der Hinweis in der Doku darin:
public void valueForPathChanged(TreePath path,
Object newValue)

Messaged when the user has altered the value for the item identified by path to newValue. If newValue signifies a truly new value the model should post a treeNodesChanged event.

---

ein guter Test wäre, zunächst auf die komplizierte Rekursion komplett zu verzichten und manuell irgendwelche Testdaten zu ändern:
Java:
Node wurzel = [holen..]
Node a1 = ..;
Node a2 = ..;
Node b1 = ..;
Node b2 = ..;
Node c1 = ..;
Node c2 = ..;
wurzel.add(a1);
wurzel.add(a2);
a1.add(b1);
a1.add(b2);
b1.add(c1);
b1.add(c2);
erst wenn diese erfolgreich komplett schick angezeigt werden danach dann die Nodes auf komplizierten Wege bestimmen
 

Laren

Bekanntes Mitglied
Hi,

Ich danke euch, aber ich versteh den Ablauf von Threads nicht.
Eigentlich funktioniert ja das ganze, aber das Programm hängt sich auf.
Jetzt hab ich Thread so verstanden, dass es im Hintergrund läuft und so mein Programm sich nicht aufhängt.
Aber warum läuft ein Thread nur kurz? Muss man diesem eine Lebenszeit oder etwas ähnliches mitgeben?

Grüße
 
S

SlaterB

Gast
ein Thread läuft bis zu seinem Ende, bei vermuterer Verarbeitung von tausenden Verzeichnissen pro Sekunde sollte deiner hier recht schnell fertig sein,
wobei sich eigentlich niemand zur Geschwindigkeit geäußert hat?

dass ein Programm sich vom geposteten Code aufhängt ist glaube ich nicht zu erkennen,
da wäre ein Gesamtprogramm hilfreicher
 

FArt

Top Contributor
Hi,

Ich danke euch, aber ich versteh den Ablauf von Threads nicht.
Eigentlich funktioniert ja das ganze, aber das Programm hängt sich auf.
Jetzt hab ich Thread so verstanden, dass es im Hintergrund läuft und so mein Programm sich nicht aufhängt.
Aber warum läuft ein Thread nur kurz? Muss man diesem eine Lebenszeit oder etwas ähnliches mitgeben?

Grüße

Noch mal zurück zu Debugger und Logging... es ist an der Zeit, dass du nicht vermutest was dein Programm macht sondern es herausfindest... keine Angst... da ist nichts magisches dran und du bist hinterher auch nicht verstrahlt... trau dich einfach...
 

Laren

Bekanntes Mitglied
habs gefunden :applaus:(glaube ich jedenfalls)
Ich habe über System.out.print die Ausgabe der Dateiverzeichnisse gemacht und er rattert sie fröhlich runter, aber der jTree wird nicht geupdatet.
Es liegt also wahrscheinlich am update von jTree^^, aber wie kann ich diesen in der Methode immer wieder updaten?

Edit: Problem gelöst, es ist tree.updateUI();
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JTree - ungültiger selection update AWT, Swing, JavaFX & SWT 2
T ProgressBox - Update AWT, Swing, JavaFX & SWT 9
Ernesto95 JavaFX JavaFX GUI mit sehr vielen Update requests AWT, Swing, JavaFX & SWT 4
G update, paintComponent AWT, Swing, JavaFX & SWT 1
T GUI Update /EDT AWT, Swing, JavaFX & SWT 7
izoards JavaFX Concurrency Update UI AWT, Swing, JavaFX & SWT 35
ms_cikar Update swingUtilities Repaint in der Schleife AWT, Swing, JavaFX & SWT 3
J TableView Update/Refresh CPU AWT, Swing, JavaFX & SWT 2
A Verständnisfragen im Umgang mit update() und JFrames AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
blazingblade JavaFX Tableview Clock Column update AWT, Swing, JavaFX & SWT 5
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
M JavaFX ComboBox: Update zur Laufzeit AWT, Swing, JavaFX & SWT 16
W Swing ProgressBar update AWT, Swing, JavaFX & SWT 4
B IconImage update im Tabbedpane AWT, Swing, JavaFX & SWT 3
M Update überschreiben klappt nicht AWT, Swing, JavaFX & SWT 4
Q JList Update Problem AWT, Swing, JavaFX & SWT 1
N Observer: update ruft nicht repaint auf AWT, Swing, JavaFX & SWT 0
M "Update" der JTable funktioniert nicht AWT, Swing, JavaFX & SWT 2
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
C Swing Update von swing-TableModels per Thread. Eins geht, das andere nicht, warum? AWT, Swing, JavaFX & SWT 12
V Swing Update Textarea AWT, Swing, JavaFX & SWT 2
T Event Handling JFreeChart Update AWT, Swing, JavaFX & SWT 2
Farbtopf Live update JFreeChart AWT, Swing, JavaFX & SWT 3
F Swing GUI-Thread für automatisches Update nutzen AWT, Swing, JavaFX & SWT 10
El_Lobo Swing bei Update von Graphik Koordinatensystem nicht jedesmal neu zeichnen AWT, Swing, JavaFX & SWT 2
M Update JPanel AWT, Swing, JavaFX & SWT 12
N update model nach dem filtern AWT, Swing, JavaFX & SWT 2
E Umgang mit der Update Methode AWT, Swing, JavaFX & SWT 38
E Swing Update JTable AWT, Swing, JavaFX & SWT 6
G Swing Update-Funktion für Swing-Anwendung AWT, Swing, JavaFX & SWT 5
E Swing JTextField Listener nach Update?! AWT, Swing, JavaFX & SWT 2
D Swing JTable Problem bei automatischem update von Zellen AWT, Swing, JavaFX & SWT 3
P 2D-Grafik PaintComponent() übernimmt keine Werte aus update() AWT, Swing, JavaFX & SWT 8
D Swing update eines Labels nicht sichtbar AWT, Swing, JavaFX & SWT 9
N Tablle nach SQL-Update neu Laden AWT, Swing, JavaFX & SWT 4
M SWT grabExcessHorizontalSpace update ? refresh ? AWT, Swing, JavaFX & SWT 6
P Observer und GUI Update AWT, Swing, JavaFX & SWT 2
w0ddes Swing Update: Laufendes GUI updaten AWT, Swing, JavaFX & SWT 8
D JTable während edit kein update machen lassen AWT, Swing, JavaFX & SWT 2
M Swing Kein update bei simulierten HTML-Link AWT, Swing, JavaFX & SWT 4
C SWT Shell update probleme - Mausbewegung nötig AWT, Swing, JavaFX & SWT 2
hdi Swing GUI update vs. Process Speed AWT, Swing, JavaFX & SWT 31
hdi Swing Gui Update Problem (EDT) AWT, Swing, JavaFX & SWT 6
C JList update über tabbedPane? AWT, Swing, JavaFX & SWT 18
M Update einer JTEextArea AWT, Swing, JavaFX & SWT 2
H JTable mySQL Update AWT, Swing, JavaFX & SWT 8
S Update des fensters beim Ersetzen von JPanels AWT, Swing, JavaFX & SWT 9
G Features nach Update löschen AWT, Swing, JavaFX & SWT 2
J Fragen zur Vererbung und Update AWT, Swing, JavaFX & SWT 12
B Update von JLabels AWT, Swing, JavaFX & SWT 2
C Habe Probleme beim Bild laden! *Update 30.11.2006* AWT, Swing, JavaFX & SWT 28
C JTreeTable update Problem AWT, Swing, JavaFX & SWT 4
S Probleme mit dem Update einer JList AWT, Swing, JavaFX & SWT 7
B View zeichnet Daten aus dem Model ohne Update AWT, Swing, JavaFX & SWT 4
A Update von Frameinhalt und Scrollbar AWT, Swing, JavaFX & SWT 11
F MVC: Update von View und Controller AWT, Swing, JavaFX & SWT 5
C JTable update: Selektion beibehalten AWT, Swing, JavaFX & SWT 12
P paintComponent /paint/ update/ offscreenImage / Graphics2D / AWT, Swing, JavaFX & SWT 4
S JMenuBar + update AWT, Swing, JavaFX & SWT 3
G Problem mit JLabel Update AWT, Swing, JavaFX & SWT 3
C [JTable] Update der Datenbank AWT, Swing, JavaFX & SWT 6
N update()-Methode für Canvas AWT, Swing, JavaFX & SWT 9
A problem mit update nach event, JSplitpane spinnt AWT, Swing, JavaFX & SWT 2
S Update von Grafik auf JPanel AWT, Swing, JavaFX & SWT 2
M GUI Update während der Verarbeitung einer Methode AWT, Swing, JavaFX & SWT 3
M update JTable AWT, Swing, JavaFX & SWT 3
T Problem bei Update von JTables in JTabbedPane AWT, Swing, JavaFX & SWT 2
D Problem beim Update von unsichtbaren JComponents mit Timern AWT, Swing, JavaFX & SWT 5
D Swing: GUI-Update-Problem AWT, Swing, JavaFX & SWT 3
J Warum funktioniert das Update des UI nicht? AWT, Swing, JavaFX & SWT 8
I GUI-Update-Probleme AWT, Swing, JavaFX & SWT 2
G Update von JPanel nach Buttonbetätigung AWT, Swing, JavaFX & SWT 1
FrittenFritze JTree, LazyLoading und "Rückwärtstraversion" AWT, Swing, JavaFX & SWT 3
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
F Jtree aus Klasse mit Arraylisten AWT, Swing, JavaFX & SWT 1
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
RalleYTN Modaler Dialog und JTree Node mit sehr... seeeeehr vielen Elementen AWT, Swing, JavaFX & SWT 6
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
W Swing Anzeigefehler bei JTree AWT, Swing, JavaFX & SWT 1
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
S JRadioButton und JCheckBox im JTree AWT, Swing, JavaFX & SWT 14
H Swing JTree: Zählt der rootNode mit? AWT, Swing, JavaFX & SWT 2
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
R JTree behandeln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
J JTree updaten AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
T JTree mit Symbolen? AWT, Swing, JavaFX & SWT 8
R Anfängerfrage: Ansichten des JTree AWT, Swing, JavaFX & SWT 1
H Swing JTree Minimumgröße AWT, Swing, JavaFX & SWT 2
F Swing JTree + DiffUtils // Markierung Nodes aufheben AWT, Swing, JavaFX & SWT 2
I JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben