@renew: modaler dialog hats gebracht, DANKE!

(eigentlich hab ich die antwort schon am 20. verfaßt, aber anscheinend hats der server gefressen, entschuldige die Verspätung)
@all: aufgewärmt hab ich den Thread aus folgendem Grund: ich hab immer noch ein Problem mit Threads (und mit der Tatsache, daß sich danach so bequem Googeln lässt

)
Wie dem auch sei, nachdem einige Datenbankzugriffe etwas länger dauern, hab ich mir gedacht, daß so ein Fortschrittsbalken doch bequem zu haben wäre. Testhalber hab ich 3 Klassen geschrieben und im Test funktioniert es auch brav (wobei zu sagen ist, daß es nur funzt, wenn ich mit Thread.start() arbeite, bei Thread.run() ärgerlicherweise nicht)
Anbei der Code:
1) Class für den ProgressBar
Code:
public class HelloLoop implements Runnable {
private int pValue = 0;
private JFrame frame = new JFrame("Progress Bar Trial");
private JProgressBar progress = new JProgressBar();
public void setMaximumSize(int max) {
progress.setMaximum(max);
}
public void setActualValue(int val) {
pValue = val;
}
public void disableProgressBar() {
frame.setVisible(false);
}
public void enableProgressBar() {
frame.setVisible(true);
pValue = 0;
}
public void run() {
progress.setPreferredSize(new Dimension(250,25));
progress.setValue(0);
progress.setStringPainted(true);
progress.setIndeterminate(false);
frame.setLayout(new FlowLayout());
frame.add(progress);
frame.pack();
while (true) {
progress.setValue(pValue);
try { Thread.sleep(50); }
catch (InterruptedException e) {}
}
}
}
2) Class mit den Datenbankspielereien (es wird einfach ein table kopiert)
Code:
public class HelloDatabase implements Runnable {
private HelloLoop pbar;
private int step = 0;
public void setProgressBar(HelloLoop p) {
pbar = p;
}
public void rumbleDatabase() {
pbar.setMaximumSize(variable);
pbar.setActualValue(0);
pbar.enableProgressBar();
//query: daten einlesen
//query: neuen table anlegen
//query: daten in neuen table einfügen
//+jeweils erhöhung der zählvariable
pbar.disableProgressBar();
} //end rumbleDatabase
public void run() {
while (true) {
pbar.setActualValue(step);
try { Thread.sleep(50); }
catch (InterruptedException e) {}
}
}
}
3) "Main" class mit dem Threadstart
Code:
public class HelloThreads {
public static void main (String[] args) {
HelloDatabase database = new HelloDatabase();
HelloLoop myProgress = new HelloLoop();
database.setProgressBar(myProgress);
Thread data = new Thread (database);
Thread bar = new Thread (myProgress);
data.start();
bar.start();
database.rumbleDatabase();
}
}
Wie gesagt, so funktioniert es ja schon fast zu meiner Zufriedenheit, nur wenn ich das Ganze ins "Hauptprogramm" integriere, wird nur der Rahmen vom Fenster des Fortschrittsbalkens angezeigt aber sonst passiert nix (sprich kein Inhalt und auch keine (optische) Änderung desselben. Outputs in der Kommandozeile würden passen.
Wo liegt der Fehler?