Programmablauf pausieren, bzw. auf Eingabe warten

Status
Nicht offen für weitere Antworten.

seels

Mitglied
Hallo!

Ich suche eine Möglichkeit, um in Java komfortabel eine "Pause" einzulegen um auf etwas zu warten.
Der Codeschnippsel unten erklärt es evtl. etwas besser... Ich starte eine GUI in der man die Anzahl der Spieler angeben kann. Nach einem Klick auf den Ok Button wird der Wert der Variablen 'player' zugewiesen, danach soll dann der Wert dem Konstruktor der Klasse Spieler übergeben werden.

Ich habe nun das Problem, dass sich die GUI öffnet und gleich wieder schließt, da es bei dem Programmablauf natürlich mit dem Konstruktor gleich weitergeht. Wie kann ich dem Code beibringen, dass er erst weitermacht, wenn in der GUI etwas eingegeben wurde und der Ok Button angeklickt, also die Variable auch wirklich initialisiert wurde?

Mir ist klar, dass ich das z.B. mit einer Schleife und if-Anweisung machen kann, so das die Methode erst aufgerufen wird wenn die Variable einen Wert enthält. Allerdings folgt hier nicht nur eine Methode sondern ziemlich viele und das würde sehr unübersichtlich werden. Gibt es daher irgendwie eine bessere Methode?

Code:
[...]
// lade GUI
// Variable 'player' wird hier nach einem klick des Ok Buttons gesetzt
SpielGUI.GUILoad();
				
// Setze Anzahl an Gegnern
Spieler spieler = new Spieler(player);
[...]

Grüße
seels
 

André Uhres

Top Contributor
seels hat gesagt.:
..Gibt es daher irgendwie eine bessere Methode?..
Du brauchst einen modalen Dialog.
"modal" heisst, dass das Programm wartet, bis der Dialog wieder weg ist.
Dazu kannst du den standard Eingabedialog "JOptionPane.showInputDialog" nehmen,
oder einen "JDialog" mit setModal(true).
 

seels

Mitglied
André Uhres hat gesagt.:
...oder einen "JDialog" mit setModal(true).

Ja das ist eine feine Sache, genau das habe ich gesucht. Allerdings ist er mir irgendwie zu Modal.. meine Buttons Funktionieren nämlich bei dem aktuellen JDialog auch nicht mehr :?

Es soll erst die eigentlich HauptGUI geladen werden und danach ein anderes Dialog Fenster in dem man erstmal die Einstellungen tätigt.
Habe ich irgend etwas falsch gemacht?

main
Code:
[...]
// lade Haupt-GUI
MainGUI main = new MainGUI();

// lade Start-GUI
StartGUI start = new StartGUI(main);	
            
[...]

In der MainGUI wird eine einfache GUI mit JFrame erstellt.

StartGUI
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class StartGUI extends JDialog
{

	public StartGUI(JFrame owner) {
	
		super(owner);
	           
	    /* Fenstertitel */  
	    this.setTitle("start");
	    this.setModal(true); /* wenn das auskommentiert wird, gehts. allerdings lässt sich dann logischerweise das andere fenster auch bearbeiten */
	      
	        
	    /* Setze Fenstergröße und Ausrichtung */
	    Dimension frameSize = new Dimension(285, 290); // Breite, Höhe        
	    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
	    int top = (screenSize.height - frameSize.height) / 2;
	    int left = (screenSize.width - frameSize.width) / 2;
	    setSize(frameSize);
	    setLocation(left, top);
	      
	      
	    /* Erstelle Elemente */
	    JButton ok = new JButton("Ok");
	      
	      
	    /* Setze Elemente */
	    addComponent(panel, ok, 187, 225, 83, 28);
	      
	      
	    /* mache Fenster sichtbar */
	    this.setVisible(true);
	    

            System.out.println("test");

	            
	    /* Button 'ok' */
	    ok.addActionListener(new ActionListener() {
	
	    	public void actionPerformed(ActionEvent evt) {
	              ok_buttonActionPerformed(evt);
	        }
	    });
	          
	}       


	/* Setze Elemente auf die gegebenen Werte */
	private void addComponent(Container container,Component c,int x,int y,int width,int height)
    {
        c.setBounds(x,y,width,height);
        container.add(c);
    }

    
    
    private void ok_buttonActionPerformed(ActionEvent evt) {                                                 
    	System.out.println("button pressed!");
    } 
    
}


Die Meldung "test" wird nicht mehr ausgegeben, also erreicht der den ActionListener schlichtweg nicht.

Grüße
seels
 

seels

Mitglied
Ok nu hab ichs rausgefunden. Das setVisible muss nach unten damit auf die ActionListener zugegriffen werden kann!

Code:
[...]
     /* Button 'ok' */
       ok.addActionListener(new ActionListener() {
   
          public void actionPerformed(ActionEvent evt) {
                 ok_buttonActionPerformed(evt);
           }
       }); 

this.setVisible(true);
[...]

Grüße
seels
 

André Uhres

Top Contributor
Ja, von dem Moment an, wo der modale Dialog sichtbar ist,
wartet das Programm bis der Dialog wieder weg ist.
Am besten nimmst du setVisible ganz aus dem Dialog raus
und machst ihn nach dem Aufruf sichtbar:
Code:
// lade Start-GUI
StartGUI start = new StartGUI(main);
/* mache Fenster sichtbar */
start.setVisible(true);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Programmablauf Java Basics - Anfänger-Themen 8
T Frage zu Programmablauf Java Basics - Anfänger-Themen 23
H Finalize Block blockiert Programmablauf Java Basics - Anfänger-Themen 15
Y Mit F3 Programmablauf unterbrechen Java Basics - Anfänger-Themen 6
sc0p Programmablauf widerholen Java Basics - Anfänger-Themen 21
K Programmablauf Java Basics - Anfänger-Themen 4
G JAVA Programmablauf UML Java Basics - Anfänger-Themen 2
D Programmablauf weiterführen Java Basics - Anfänger-Themen 3
C Frage zum Programmablauf Java Basics - Anfänger-Themen 5
S Programmablauf anzeigen lassen Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
DorFey Schrittweises abändern des GUI während for-Schleife / pausieren einer for-Schleife Java Basics - Anfänger-Themen 3
CptK Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
J Timer richtig pausieren Java Basics - Anfänger-Themen 2
V wie kann ich eine Schleife pausieren, bis ein Jbutton gedrückt wird ? Java Basics - Anfänger-Themen 17
S Methode pausieren bis Button gedrückt wird Java Basics - Anfänger-Themen 5
E ExecutorService pausieren Java Basics - Anfänger-Themen 3
W Snake pausieren Java Basics - Anfänger-Themen 4
H Threads Thread pausieren Java Basics - Anfänger-Themen 6
K Programm ohne Threads kurz Pausieren Java Basics - Anfänger-Themen 4
7 Endlosschleife pausieren Java Basics - Anfänger-Themen 11
M AudioStream - wiederholen, pausieren und wieder starten Java Basics - Anfänger-Themen 2
A Programm pausieren Java Basics - Anfänger-Themen 6
M Ausführen pausieren Java Basics - Anfänger-Themen 16
manunana89 Programm kurz pausieren??? Java Basics - Anfänger-Themen 6
G Schleife mit Thread.sleep pausieren Java Basics - Anfänger-Themen 12
S Stoppuhr - starten, stoppen, pausieren Java Basics - Anfänger-Themen 2
H Threads pausieren Java Basics - Anfänger-Themen 5
graai Zeichenmustr malen mit Eingabe Java Basics - Anfänger-Themen 7
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
H Eingabe Java Basics - Anfänger-Themen 7
F Bedingung für Eingabe Java Basics - Anfänger-Themen 2
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
B Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen Java Basics - Anfänger-Themen 5
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
J Eingabe Einschränken Java Basics - Anfänger-Themen 1
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
D Array via Eingabe befüllen Java Basics - Anfänger-Themen 6
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N Abbrechen einer Eingabe endet im Fehler Java Basics - Anfänger-Themen 3
S Konsolen eingabe Java Basics - Anfänger-Themen 17
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
x-tshainge Bei if (eingabe = = ... ) enter als eingabe nehemen Java Basics - Anfänger-Themen 4
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
T Input/Output Falsche Eingabe ausgeben Java Basics - Anfänger-Themen 3
R Ratespiel mit Return und einer Eingabe Java Basics - Anfänger-Themen 1
K Eingabe in Array speichern und Ausgeben Java Basics - Anfänger-Themen 9
J Eingabe des Scanners an einer bestimmten Position Java Basics - Anfänger-Themen 6
J Input/Output Den zweiten Output erst nach Eingabe ausgeben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben