![]() |
![]() |
|
|
|||||||
| Programmierung Rat & Tat für Programmierer |
![]() |
|
|
Themen-Optionen | Ansicht |
|
|
|
|
#1 |
|
Inventar
![]() Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552
|
2 einfache möglichkeiten:
In der Methode von GUI 1 die GUI 2 aufruft deaktivierst du vorher alles in GUI 1 damit nix mehr ausgeführt werden kann. Und beim Schließen von GUI2 aktivierst wiede alles und updatest die Daten. Noch einfacher: GUI 2 als modalen Diaglog öffnen (kann man beim Öffnen angeben wie das Window geöffnet werden soll, weiß jetzt aber nimmer auswendig wie) - dann ist sowieso nur noch GUI2 aktiv und sonst kann nichts mehr angeklickt werden. ![]() |
|
|
|
|
|
#2 |
|
Hero
![]() |
@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) {}
}
}
}
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) {}
}
}
}
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();
}
}
Wo liegt der Fehler?
____________________________________
Einstein, Pascal and Newton are playing hide and seek. Einstein is \"it\" so he faces the wall, closes his eyes and counts to π. Pascal runs off like an idiot but Newton pulls out a piece of chalk and draws a 1m x 1m square on the ground and then stands in it\'s centre. Einstein\'s done counting and turns around and sees Newton, so he grabs him and screams \"I found Newton!\" Then Newton smirks and says, \"I\'m not Newton, I\'m Pascal\". |
|
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|