JDialog als Progress-Anzeige

NZPaul

Mitglied
Hallo zusammen,
ich sitze nun schon den ganzen Tag am selben Problem..
Ich möchte einen JDialog öffnen, dann eine Methode ausführen (die läuft etwas länger) und anschließend den Dialog wieder schließen. Der Dialog sagt einfach nur das gerechnet wird.
Das Frame, über welche der Dialog geöffnet wird, soll dabei blockiert werden.

Durch das setzen von Modal beim Dialog ist zumindest der letzte Punkt schon mal erfüllt.
Das Problem ist jedoch, dass dann der Thread von dem Frame komplett pausiert und somit meine Methode nicht ausgeführt wird..

Es ist leider auch nicht möglich die Methode in einen Extra Thread zu packen.

So soll das Programm vom Prinzip her ablaufen:
Java:
[...]
Dialog d = new Dialog(); //Dialog wird geöffnet
int i = methode(); //Methode, die lange rechnet und eine Rückgabe hat
d.close(); //Dialog wird wieder geschlossen
[...]

Ich würde mich sehr freuen, wenn mir jemand einen Tipp geben könnte!!

Gruß
Paul
 

turtle

Top Contributor
Dialog d = new Dialog(); //Dialog wird geöffnet
int i = methode(); //Methode, die lange rechnet und eine Rückgabe hat

Das sieht für mich merkwürdig aus, insbesondere wenn der JDialog modal ist. dann wird natürlich die Methode erst aufgerufen, NACHDEM der Dialog geschlossen wurde.

Warum packst du den Aufruf der methode nicht IN den Dialog?

Den Rückgabewert deiner Methode kannst du über eine geschrieben Methode in JDialog abrufen.
 

NZPaul

Mitglied
Das sieht für mich merkwürdig aus, insbesondere wenn der JDialog modal ist. dann wird natürlich die Methode erst aufgerufen, NACHDEM der Dialog geschlossen wurde.

geanu das ist das Problem. :)
der Code entspricht auch nur meiner Wunschvorstellung, um zu verdeutlichen was ich erreichen möchte.

Ich hatte auch schon überlegt die Methode im Dialog erst auszuführen, aber ich finde das ist eine sehr unschöne Lösung.. Die Methode steht nämlich im keinen direkten Zusammenhang mit dem Dialog.
Der Dialog soll später auch an verschiedenen stellen im Programm angezeigt werden und dabei sollen immer unterschiedliche Methoden im Hintergrund abgearbeitet werden.
 
Zuletzt bearbeitet:

turtle

Top Contributor
Ich hatte auch schon überlegt die Methode im Dialog erst auszuführen, aber ich finde das ist eine sehr unschöne Lösung.. Die Methode steht nämlich im keinen direkten Zusammenhang mit dem Dialog.
Der Dialog soll später auch an verschiedenen stellen im Programm angezeigt werden und dabei sollen immer unterschiedliche Methoden im Hintergrund abgearbeitet werden.

Das spricht aber NICHT dagegen, trotzdem den Funktionsaufruf IN den Dialog zu packen, oder?

Du kannst doch ein Interface definieren
Java:
public interface Excecutor {
    public Object run();
}

Dein Dialog bekommt eine Klasse, die das Interface implementiert, übergeben (vielleicht im Konstruktor) und der Dialog ruft einfach die run-Methode des Interfaces auf. Dann wird ja genau die Implementierung aufgerufen, also eine der unterschiedlich Methoden, die da im Hintergrund laufen sollen.

Das ist auch ein Grund, weshalb es gut ist, es in den Dialog zu packen. ALLE Stellen, an denen so etwas passieren soll, können den gleichen Dialog nutzen und bestimmte Methoden aufrufen lassen.
 

NZPaul

Mitglied
Perfekt!! :D :toll:

Ich hatte die Lösung also praktisch schon ;D Ich habe zuvor das Runnable Interface für genau diesen zweck verwenden wollen, aber hatte mit dem natürlich das Problem, dass die run-Methode keinen Rückgabewert hat.. Ich bin aber leider nicht auf die Idee gekommen ein eigenes Interface zuschreiben mit genau diesen Möglichkeiten.. :oops:

Also vielen, vielen Dank!!
 

turtle

Top Contributor
java.util.concurrent.Callable ist wohl das was du meintest.

PS: Vielleicht auch mal auf Danke klicken, wenn ich helfen konnte;)
 

NZPaul

Mitglied
Soo.. Leider habe ich mich etwas zu früh gefreut, da es noch nicht klappt.. :/ aber das ist bestimmt nur eine Kleinigkeit die ich nicht beachte ;D

Das Programm bleibt sofort stehen sobald der Dialog auf visible=true gesetzt wird..

ich habe es jetzt so:

Java:
//der Dialog
public class Dialog extends JDialog {

	private Callable<Object> toExecute;
	
	public DatabaseConnectionProgressBarMessage(Callable<Object> toExecute) {
		super();
		//Datenfelder initialisieren
		this.toExecute = toExecute;

		//JDialog Konfigurieren
		setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
		setModal(true);
	}

	public Object start() {
		//Dialog öffenen
		setVisible(true); //!!!!!!!!!!!!!!!hier bleibt das Programm stehen!!!!!!!!!!!!!!!

		//auszuführendes ausführen
		Object toReturn = null;
		try {
			toReturn = toExecute.call();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//Dialog wieder schließen
		dispose();
		
		return toReturn;
	}
}

Java:
[...]
//wo der Dialog aufgerufen wird
Callable call = new Callable<Object>() {
     public Object call() throws Exception {
         return model.setServerData((ServerDataObject)event.getObject());
     }
   }

int i = (Integer)(new Dialog(call)).start();
[...]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
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
D JDialog: immer nur einer gleichzeitig AWT, Swing, JavaFX & SWT 4
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
J Swing JDialog gleichzeitig mit JFrame anzeigen AWT, Swing, JavaFX & SWT 8
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