Swing JDialog gleichzeitig mit JFrame anzeigen

javaDavid

Mitglied
Hallo!
Ich habe folgendes Problem:
Ich habe einen JFrame mit einem JButton, wenn dieser geklickt wird, wird im actionPerformed eine Verbindung zu einer Datenbank aufgebaut. Dies dauert einige Zeit. Um diese Zeit zu überbrücken würde ich gerne einen JDialog mit einer Meldung für die Zeit vom Zeitpunkt weg, an dem der Button geklickt worden ist, bis die Verbindung abgeschlossen ist einblenden.

Ich habe es schon mit
Code:
jdialog.setModal(false);
versucht, jedoch wird dann der JDialog ohne Inhalt angezeigt, und erst wenn Verbindung zur Datenbank aufgebaut ist, zeichnet sich der Inhalt des JDialogs.
Und logischerweise nutzt
Code:
jdialog.setModal(true);
noch weniger, da dann die Verbindung erst aufgebaut wird, nachdem der Dialog geschlossen wurde.

Gibt es irgendeine Möglichkeit, den JDialog beim Klick des Buttons anzuzeigen, dann gleichzeitig die Verbindung zur Datenbank aufzubauen und danach den JDialog wieder auszublenden?

MfG, David
 

xehpuk

Top Contributor
Hey,

die Verbindung zur Datenbank muss in einem anderen Thread aufgebaut werden. Wenn du es direkt über die
Code:
actionPerformed
machst, läuft der Event Dispatch Thread da rein, weswegen sich auf der Oberfläche nix mehr tut, bis er zurückkehrt.
 

javaDavid

Mitglied
Danke erstmal für die rasche Antwort.
Wann und wie genau soll ich den Thread starten?
Ich hab mal einen eigenen ActionListener geschrieben, der auch Runnable implementiert.
Bisher hab ich noch nicht viel mit Threads gearbeitet, und wenn ich den ActionListener wiefolgt implementiere, wird zwar der Dialog vollständig angezeigt, jedoch wird die Verbindung nicht aufgebaut. Wo mache ich da einen Fehler bzw. wie würde die richtige Lösung aussehen?

Java:
public class OkActionListener implements ActionListener, Runnable{

    private CostumDialog cd; // Der anzuzeigende Dialog
    private DBAccessManager man;
    private Thread db;
    
    public OkActionListener(Adminlogin login) {        
        cd = new CostumDialog("a message");
        db = new Thread();       
    }


    @Override
    public void actionPerformed(ActionEvent e) {        
        cd.setVisible(true);
        db.start();       
    }

    @Override
    public void run() {       
        performAction();
    }

    private void performAction() {
        man =  DBAccessManager.getInstance();
        //weitere Aktionen, die länger dauern...
        cd.setVisible(false);
   }
}
 

GUI-Programmer

Top Contributor
nicht java.irgrnedwas.Thread sondern wie bereits gesagt javax.swing.SwingWorker ubd zuerst den Worker mit execute starten und dann den Dialog anzeigen.

Les dir das Tutorial durch!
 
G

Gast2

Gast
Solche Dinge macht man imho besser mit einer GlassPane. Der Aufbau ect. sollte natürlich trotzdem im SwingWorker ect. erfolgen.
 

javaDavid

Mitglied
Danke GUI-Programmer, hat perfekt funktioniert.
Für all jene, die vielleicht auch an der Lösung dieses Problems interessiert sind poste ich mal den Code:
Java:
public class OkActionListener extends SwingWorker implements ActionListener{
    private CostumDialog cd;
    private DBAccessManager man;
    
    public OkActionListener(Adminlogin login) {
        cd = new CostumDialog("a Message");             
    }

    @Override
    public void actionPerformed(ActionEvent e) {        
        cd.setVisible(true);
        this.execute();       
    }

    @Override
    protected Object doInBackground() throws Exception {
        performAction();
        return null;
    }
    
    private void performAction() {        
        man =  DBAccessManager.getInstance();
        //längere Funktionsdauer
        cd.setVisible(false);
   }
}
 
G

Gast2

Gast
Würde ich auf jeden Fall nicht mit einer GlassPane umsetzen, da gefällt mir der Ansatz vom TO schon viel besser. Das ist halt Geschmackssache und nicht eine vorgeschriebene Vorgehensweise.

Ich finds schon ebssre, da man regulieren kannw as der User in der Zwischenzeit macht. Man kann ja durchaus in der GlassPane einen Dialog einbinden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JDialog: immer nur einer gleichzeitig AWT, Swing, JavaFX & SWT 4
E JDialog mit count down timer AWT, Swing, JavaFX & SWT 1
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
A ViewController (IFrame) > Jdialog > Model AWT, Swing, JavaFX & SWT 1
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
L Swing JDialog ton beim klicken ausstellen AWT, Swing, JavaFX & SWT 1
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
Drachenbauer Hauptfenster erhält schmale Streifen rechts unt unten, wenn ich einen JDialog hinzufüge. AWT, Swing, JavaFX & SWT 19
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
B Eingaben im JDialog abwarten AWT, Swing, JavaFX & SWT 4
S Swing JDialog mit KeyEvent als Rückgabe AWT, Swing, JavaFX & SWT 1
O Swing JDialog öffnen und dann warten bis er geschlossen wurde AWT, Swing, JavaFX & SWT 2
stylegangsta JDialog bestimmte Zeilen kursiv AWT, Swing, JavaFX & SWT 20
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
T Event Handling JDialog schließen, sobald ein neuer erzeugt wird AWT, Swing, JavaFX & SWT 3
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
D Button auf geöffnetem JDialog AWT, Swing, JavaFX & SWT 5
N Definitionen JDialog AWT, Swing, JavaFX & SWT 7
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
F Swing JDialog schließen - WindowListener bekommt dispose nicht mit AWT, Swing, JavaFX & SWT 0
N JDialog als Progress-Anzeige AWT, Swing, JavaFX & SWT 6
M JDialog statt JFrame AWT, Swing, JavaFX & SWT 22
I focus an ein jdialog geben AWT, Swing, JavaFX & SWT 3
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
M JDialog soll JFrame "blockieren" AWT, Swing, JavaFX & SWT 2
K JDialog zeigt Components nicht an AWT, Swing, JavaFX & SWT 3
S Jframe aus JDialog starten AWT, Swing, JavaFX & SWT 4
M JDialog übergibt eingaben nicht an aufrufende klasse AWT, Swing, JavaFX & SWT 15
S Assistent im JDialog AWT, Swing, JavaFX & SWT 7
H Swing JDialog cannot be resolved as a typ AWT, Swing, JavaFX & SWT 12
C Swing JDialog "flutet" den Arbeitsspeicher AWT, Swing, JavaFX & SWT 9
S Swing Eigenen JDialog mit Rückgabewert AWT, Swing, JavaFX & SWT 3
C Swing JDialog Ladebildschirm wird nicht angezeit AWT, Swing, JavaFX & SWT 5
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
A JDialog (modal) blockiert alle Fenster! AWT, Swing, JavaFX & SWT 2
Jagson Swing Von JDialog zu anderem JDialog wechseln AWT, Swing, JavaFX & SWT 2
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
A Swing JDialog KeyBindings und Textfelder AWT, Swing, JavaFX & SWT 5
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
S JDialog per Button schließen AWT, Swing, JavaFX & SWT 2
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
D JDialog alwaysOnTop, aber nur innerhalb der Applikation AWT, Swing, JavaFX & SWT 3
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
S Probleme jDialog einfügen AWT, Swing, JavaFX & SWT 4
qwerqer Swing JDialog Darstellungsprobleme - Dialog lässt sich nicht schließen AWT, Swing, JavaFX & SWT 3
S Schrift ändern in JDialog AWT, Swing, JavaFX & SWT 3
S Problem mit JDialog AWT, Swing, JavaFX & SWT 3
D Elternfenster vom JDialog aktualisieren oder nicht ? AWT, Swing, JavaFX & SWT 7
hdi Swing Genaue Funktionsweise von modalem JDialog? AWT, Swing, JavaFX & SWT 11
U JDialog ohne Taskleiste AWT, Swing, JavaFX & SWT 7
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
Ollek JDialog Koponenten neu anordnen AWT, Swing, JavaFX & SWT 3
A JDialog AWT, Swing, JavaFX & SWT 10
Dit_ SwingUtilities.invokeLater und Modaler JDialog AWT, Swing, JavaFX & SWT 11
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A JDialog ausdrucken AWT, Swing, JavaFX & SWT 7
aze JDialog mit runden ecken AWT, Swing, JavaFX & SWT 8
Dit_ JDialog nur horizontal vergrößern AWT, Swing, JavaFX & SWT 3
C Swing JProgressBar in JDialog wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
M Swing Vererbung, Probleme mit JDialog AWT, Swing, JavaFX & SWT 12
H JDialog, Modal - Klassenübergreifend => Problem AWT, Swing, JavaFX & SWT 5
S Swing Bild (Gif) in Bitte warten JDialog AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
K Swing JDialog aus Frame ausrufen AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
B JDialog AWT, Swing, JavaFX & SWT 6
J Swing Probmel mit JDialog (Modal/FocusLost/Button) AWT, Swing, JavaFX & SWT 5
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
J Swing JDialog mit static-Funktion anzeigen -> Rückgabewert AWT, Swing, JavaFX & SWT 3
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
D Mehrere Comboboxen in JDialog AWT, Swing, JavaFX & SWT 2
F JDialog per Button schliessen - klappt nicht AWT, Swing, JavaFX & SWT 4
BattleMaster246 JDialog erscheint in der Taskbar AWT, Swing, JavaFX & SWT 7
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
R Swing JDialog liefert immer false, 2 JListen verknüpfen AWT, Swing, JavaFX & SWT 3
P Swing eigenen Modalen JDialog AWT, Swing, JavaFX & SWT 6
J JDialog verliert Werte AWT, Swing, JavaFX & SWT 3
N Variablen an JDialog übergeben AWT, Swing, JavaFX & SWT 2
P Swing JDialog schliesst nicht AWT, Swing, JavaFX & SWT 2
X Swing JDialog von JInternalFrames überlappen lassen AWT, Swing, JavaFX & SWT 2
O JDialog-JScrollPane-JTable Problem AWT, Swing, JavaFX & SWT 3
N Swing Frage zu modalem JDialog. AWT, Swing, JavaFX & SWT 16
A JFrame oder JDialog AWT, Swing, JavaFX & SWT 12
B Swing JDialog : Herausfinden wie dieser beendet wurde? AWT, Swing, JavaFX & SWT 2
T JDialog ohne Fenstermanager? AWT, Swing, JavaFX & SWT 2
S JDialog in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 3
A Swing JFrame Werte aus JDialog übergeben AWT, Swing, JavaFX & SWT 4
K Swing JDialog ohne Titlebar mit Rahmen AWT, Swing, JavaFX & SWT 5
KrokoDiehl Swing KeyEvents für JDialog / JFrame AWT, Swing, JavaFX & SWT 2
C Swing JComboBox in JDialog AWT, Swing, JavaFX & SWT 3
F Frage zu Dialogen mit JDialog -Erstellung des Konstruktors AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben