JOptionPane ohne Klick-Aufforderung

dalco

Aktives Mitglied
hallo,
ich starte mit einem button eine relativ lang dauernde datenbankabfrage, wenn sie fertig ist lass ich ein JOptionPane anzeigen mit "Daten fertig" , auf OK klicken und man weiß das alles fertig ist.

nun möchte ich gern beim button klicken ein JOptionPane auf machen, das sofort anzeigt "Aktualisiere Daten..." und während des vorgangs stehen bleibt, ist alles fertig so sollte sich der text wieder ändern in "Daten fertig", so weiß man, dass was passiert.

habt ihr eine idee dazu oder eine alternative dem user während des laden etwas anzuzeigen, dass was geladen wird, hab hier gelesen, das es was mit busypainter gibt, sieht gut aus, funktioniert aber nicht.

danke für eure antworten
mfg
tino
 

L-ectron-X

Gesperrter Benutzer
BusyPainter ist eine Klasse aus SwingX, kommt also nicht mit der Standard-Java API. Du müsstest daher das SwingX-Paket herunterladen und in dein Projekt einbauen.

Wenn du sagst, dass etwas nicht geht, musst du auch beschreiben, was genau nicht funktioniert. Eine Fehlermeldung wäre toll!

Es gibt verschiedene Ansätze. Du solltest auf jeden Fall die DB-Abfrage in einem eigenen Thread durchführen.
 

dalco

Aktives Mitglied
das mit dem busypainter will ich nicht, hatte die jar-dateien schon geladen, aber egal...
ich möchte eben in diesem kleinen optionpane letztlich die sachen optisch anzeigen die beim test im eclipse unten in der console mit sysouts angezeigt werden:
reihenfolge:
1. "starte"
2. zeigt die sysouts an......
3. wenn alles fertig ist -> "fertig"

ich denke das problem ist, dass das java zu langsam ist, er macht es, aber die paint methoden der optionpane sind zu langsam, es kommt gar nicht dazu und zeigt erst am ende dann das "fertig" an
gruss tino
 

L-ectron-X

Gesperrter Benutzer
ich denke das problem ist, dass das java zu langsam ist, er macht es, aber die paint methoden der optionpane sind zu langsam, es kommt gar nicht dazu und zeigt erst am ende dann das "fertig" an
Uhh... da lehnst du dich aber verdammt weit aus dem Fenster! :eek:
Java ist dafür nicht zu langsam. Java ist in etwa so schnell wie C++, man hat schon auch 3D-Spiele in Java geschrieben, auch wenn Java dafür nicht so geeignet ist.

Du hast nur noch nichts über den Mechanismus des Zeichnens in Java gehört oder ihn nicht verstanden.
All deine Änderungen an der GUI müssen im EDT (Event Dispatch Thread) gemacht werden. Der EDT ist quasi eine Warteschlange, in der nacheinander Events und Zeichenoperationen abgearbeitet werden.

Diese Fragen wurden schön öfter hier behandelt, beispielhaft dafür dieser Thread, in dem Marco13 das ganz gut erklärt: http://www.java-forum.org/java-basics-anfaenger-themen/104826-habe-synchronisationsproblem.html

Dann gibts jetzt nach was zum Lesen und Verstehen: Threads and Swing
 

dalco

Aktives Mitglied
hallo,
dank dir, du hast recht, so tief stecke ich nicht in der materie, mit langsam will ich eben das sagen, dass das paint eben erst nachdem der rest durchgelaufen ist ausgeführt wird.
leienhaft bräuchte ich eben sowas wie einen listener, der sieht: aha paint wurde korrekt dargestellt, jetzt mach die berechnungen und danach zeige fertig an.

werd mir die threads mal ansehen
mercy tino
 

dalco

Aktives Mitglied
hallo nochmal,
ich weiß nicht wie ich dem Event Dispatch Thread nun sage: erst wenn das kleine fenster komplett sichtbar ist, dann mach alle rechnungen, etc un dann den rest.
vereinfacht siehr es so im frame aus:

Java:
public void start() {
ModelessPane mypane = new ModelessPane("Daten werden aktualisiert...");

db.connectToDatabase();
			   con = db.getConnection();
			   update.countEntries(con , "SELECT * FROM kletterwaende");
			   update.getWallData(con , "SELECT id,wall,name,land,zone,region,gebiet,routen,bildname,anzahl,geoLaenge,geoBreite FROM kletterwaende");
			   anzWalls = update.getData();
db.close();

dann werden alle rechnungen, speichern, auslesen, etc gemacht..............
und zum schluss angezeigt >
mypane.setText("Berechnung des\naktuellen Wände-Rankings\n\nErfolgreich beendet!", true);
}

das ModelessPane mypane ist eben dieser kleine frame, der in der mitte des bildschirms sichtbar ist während die daten bearbeitet werden, nur leider kommt er nicht zum zug, da die berechnungen schneller sind :(
wenn ich es richtig verstanden habe müsste der Event Dispatch Thread meine zeile 1
"ModelessPane mypane = new ModelessPane("Daten werden aktualisiert...");"
checken, wenn die angezeigt wird, weitermachen.
aber ich weiß nicht wie ich das thread-mäßig oder so abchecke.

danke und schönen abend noch
tino
 

Cola_Colin

Top Contributor
Wo genau machst du den dieses Panel sichtbar ?

In welchem Thread führst du diese Methode start aus ?
Wenn das als Reaktion auf einen Eventlistener ausgeführt wird, sprich z.B. durch einen Button ausgelöst wird, so musst du es in irgendeinen anderen Thread verschieben.
 

dalco

Aktives Mitglied
hallo,
naja ausgeführt wird es in einem Jmenu-button mit einem actionlistener, sowas wie "Starte Aktualisierung", in dieser klasse habich aber garnichts mit threads programmiert, einfach runtergetippt, die sachen laufen ja eben, ich dachte nicht, dass das soooo ein problem sein kann, eben dieses kleine pane anzuzeigen bevor die eigentliche aktualisierung beginnt.
wenn ich jetzt dafür in 17 anderen klassen alles mit threads machen muss um dies zu schaffen, dann verzichte ich auf das kleine fenster, ich dachte hier posted einer ein try/catch oder so dafür und die sache geht
danke euch allen
tino
 

dalco

Aktives Mitglied
danke euch allen nochmal,
habe es jetzt profisorisch mit einem banalen thread.sleep() hingekommen.
über die ganze thread-geschichte an sich muss ich noch mehr lernen.
mercy
tino
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
nbergmann The type JOptionPane is not accessible. Java Basics - Anfänger-Themen 4
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
M JOptionPane Fehler bei "Abbrechen" des Fensters Java Basics - Anfänger-Themen 10
OSchriever Exception für Abbrechen-Schaltfläche JOptionpane Java Basics - Anfänger-Themen 9
S JOptionPane komplett leeres Fenster Java Basics - Anfänger-Themen 4
Dawinartor Klassen Zeilenumbruch in JOptionPane.showMessageDialog Java Basics - Anfänger-Themen 8
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
T JOptionPane mit eigenem Icon Java Basics - Anfänger-Themen 4
C JOptionPane tritt manchmal bei Plugin in den Hintergrund Java Basics - Anfänger-Themen 2
das_leon JOptionPane Titel setzen Java Basics - Anfänger-Themen 1
J jOptionPane, Array und negative Zahlen Java Basics - Anfänger-Themen 2
B JOptionPane Java Basics - Anfänger-Themen 5
S JOptionPane mit Schleife in einem Ausgabefenster Java Basics - Anfänger-Themen 4
M jOptionPane mit if else Java Basics - Anfänger-Themen 16
K JOptionPane/catch/try/finally/if Java Basics - Anfänger-Themen 9
B JOptionPane Java Basics - Anfänger-Themen 4
N Erste Schritte JOptionPane - zerstörtes Layout Java Basics - Anfänger-Themen 2
D Erste Schritte JOptionPane Java Basics - Anfänger-Themen 7
S JOptionPane/Popup mit GUI Java Basics - Anfänger-Themen 2
R Fehler mit JOptionPane Java Basics - Anfänger-Themen 3
A Fehler bei der Speicherung von JOptionPane-Eingaben Java Basics - Anfänger-Themen 4
N Problem mit JOptionPane und Fenster-Fokus Java Basics - Anfänger-Themen 2
S Bild in JOptionPane Java Basics - Anfänger-Themen 1
L Strings in einem JOptionPane farbig Java Basics - Anfänger-Themen 2
E JOptionPane.showMessageDialog Fehler Java Basics - Anfänger-Themen 1
R Text Pane Aktualisierung erst nach JOptionPane Java Basics - Anfänger-Themen 10
J while (eingabe == "0") eingabe = JOptionPane.showInputDialog("...") Java Basics - Anfänger-Themen 5
S Konsolenausgabe ales JOptionPane? Java Basics - Anfänger-Themen 5
Z Darstellungsfehler mit JOptionPane Java Basics - Anfänger-Themen 2
L Interface JOptionPane Umwandlung Java Basics - Anfänger-Themen 10
L Anderes Layout für JOptionPane? Java Basics - Anfänger-Themen 6
S JoptionPane mit Umbruch Java Basics - Anfänger-Themen 21
Eileen Brüche addieren in Zwei Klassen mit JOptionPane Java Basics - Anfänger-Themen 4
S JOptionPane.showMessageDialog Java Basics - Anfänger-Themen 20
M JOptionPane 2 Angaben in ein Dialogfeld Java Basics - Anfänger-Themen 7
H JOptionPane YES Option mit Folge? Java Basics - Anfänger-Themen 2
P Input/Output JOptionPane Fehlermeldung Catchen Java Basics - Anfänger-Themen 5
N Grafiken in JOptionPane Java Basics - Anfänger-Themen 3
T Benutzereingabe in form von string wieder ausgeben in JOptionPane Java Basics - Anfänger-Themen 14
B Codeschnipsel-Frage zu JOptionPane Java Basics - Anfänger-Themen 4
D Problem mit meinem ersten JOptionPane - Fatal exception occurred. Program will exit. Java Basics - Anfänger-Themen 6
H Focus auf Textfeld in JOptionPane Java Basics - Anfänger-Themen 2
J JOptionPane wiederholt aufrufen Java Basics - Anfänger-Themen 2
M JOptionPane null on closing with X Java Basics - Anfänger-Themen 6
M GUI JOptionPane - Parameter im Konstruktor festlegen? Java Basics - Anfänger-Themen 5
brunothg Internal JOptionPane Icon ändern Java Basics - Anfänger-Themen 5
J CLOSE in JOptionPane Java Basics - Anfänger-Themen 7
S JOptionPane Java Basics - Anfänger-Themen 29
F Alternative zu JoptionPane Java Basics - Anfänger-Themen 7
M Datentypen JOptionPane Java Basics - Anfänger-Themen 13
F jOptionPane (ConfirmDialog) aufrufen Java Basics - Anfänger-Themen 2
E JOptionPane Java Basics - Anfänger-Themen 11
J JOptionPane Datum Eingabe Java Basics - Anfänger-Themen 3
R JOptionPane funktioniert nicht mit Abbrechen Knopf Java Basics - Anfänger-Themen 16
H JOptionPane validieren Java Basics - Anfänger-Themen 3
D nur JOptionPane im Windows Style Java Basics - Anfänger-Themen 3
D Wählfenster(JOptionPane) Java Basics - Anfänger-Themen 3
N Hilfe!!! JOptionPane Java Basics - Anfänger-Themen 12
N javax.swing.JOptionPane einbauen? Java Basics - Anfänger-Themen 9
M Hilfe: JOptionPane.showInputDialog Java Basics - Anfänger-Themen 3
T JOptionPane mit .showInputDialog: Ergebnis abfragen? Java Basics - Anfänger-Themen 2
P JOptionPane.showInputDialog Java Basics - Anfänger-Themen 6
L ParentComponent von JOptionPane Java Basics - Anfänger-Themen 2
X JOptionPane.showMessageDialog(); - Import Befehl? Java Basics - Anfänger-Themen 4
C JOptionPane mit Icon Java Basics - Anfänger-Themen 5
G Problem mit JOptionPane. Java Basics - Anfänger-Themen 7
P JOptionPane mit Inhalt? Java Basics - Anfänger-Themen 2
M HTML in JOptionPane-Dialog aber keine Links Java Basics - Anfänger-Themen 6
A JOptionPane -> abbrechen -> NullPointerException Java Basics - Anfänger-Themen 4
M JOptionPane - Dialog Java Basics - Anfänger-Themen 6
C Problem mit JOptionPane.showInputDialog Java Basics - Anfänger-Themen 2
G Schleife mit JOptionPane Java Basics - Anfänger-Themen 6
C JOptionPane in Taskleiste anzeigen Java Basics - Anfänger-Themen 3
G JOptionPane.showInputDialog Java Basics - Anfänger-Themen 2
F JOptionPane selbst programmieren Java Basics - Anfänger-Themen 8
G Problem miT JOptionPane Java Basics - Anfänger-Themen 6
G JOptionPane.TOOL_TIP_TEXT_KEY wie verwendet man es? Java Basics - Anfänger-Themen 4
G JOptionPane wird nicht angezeigt Java Basics - Anfänger-Themen 3
I Problem bei JOptionPane Java Basics - Anfänger-Themen 3
B JOptionPane in vordergrund bringen Java Basics - Anfänger-Themen 2
G JOptionPane zentrieren? Java Basics - Anfänger-Themen 2
M JOptionPane.OK_OPTION abfangen oder disablen? Wie? Java Basics - Anfänger-Themen 3
G JOptionPane Java Basics - Anfänger-Themen 4
P Probleme mit JOptionPane Java Basics - Anfänger-Themen 7
G JOptionPane Java Basics - Anfänger-Themen 6
B JOptionPane und das zweidimensianle Array Java Basics - Anfänger-Themen 2
M StackOverFlow bei JOptionPane? Java Basics - Anfänger-Themen 23
S JOptionPane.showInputDialog nur ein OK Button Java Basics - Anfänger-Themen 3
G JOptionPane Java Basics - Anfänger-Themen 8
D JOptionPane mit eigenem Icon Java Basics - Anfänger-Themen 2
A Bild einfügen in JOptionPane Java Basics - Anfänger-Themen 5
N JOptionPane.showInputDialog gibt null zurück Java Basics - Anfänger-Themen 9
D Thread und JOptionPane -> Problem Java Basics - Anfänger-Themen 6
D jOptionPane OK Button Java Basics - Anfänger-Themen 4
B JOptionPane mit mehr Eingabeflächen Java Basics - Anfänger-Themen 3
G JOptionPane Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben