Ersetzen eines confirm dialogs/ synchronisieren von methoden

Grimnir

Mitglied
Hallo zusammen!
Ich möchte gerade eine Methode ergänzen. Bis vor kurzen hat mir in dem Prog. ein Confirm Dialog mit YES_NO_CANCEL gereicht. Jetzt benötige ich noch einen vierten Button. Also hab ich mir eine entsprechende Klasse erstellt.
Das Problem dabei ist jetzt natürlich dass das Programm beim ausführen einfach nur die Methode aufruft ohne auf eine Antwort zu warten welcher Button geklickt wurde.
Wie wird den die Rückfrage bei Confirm Dialog z.B

Java:
 if (result == JOptionPane.YES_OPTION) {			
					
					System.out.println("Du hast JA gesagt");		
	
				}
realisiert?

Meine einzige Idee ist ein Thread der ständig ein Boolean prüft, welchen ich dann in der Fensterklasse entsprechend ändere. Das gefällt mir aber nicht wirklich und muss wie im Confirm Dialog ja auch anders zu realisieren sein.

Hier noch ein wenig Quelltext zum Verständnis:

Java:
for (int i = 0; i < wertuebergabe.size(); i++){
		for (int j = 0; j < Einlesen.Polypunkte.size(); j++){

if(eine_bedingung_die_vorher_berechnet_wird >= 0.5 ){

// Jetzt einfacher Aufruf der neu erstellten Methode

					AenlicherPunktFenster.AchtunngFenster(i,j);
	
					
					
////			Vorher Aufruf des Confirm Dialog

//			int result = JOptionPane.showConfirmDialog(null, text des Dialoges"
//					,"Achtung", JOptionPane.YES_NO_CANCEL_OPTION);
//			if (result == JOptionPane.YES_OPTION) {	
							
//				löschen(wertuebergabe.get(i).pnum);	
			
//			} else if (result == JOptionPane.NO_OPTION) {	

//				JOptionPane.getRootFrame().dispose();	

//		}else if (result == JOptionPane.CANCEL_OPTION) {									

//			return;						
//		} 
}}// ==> restlicher  Code welcher ausgeführt wird

Die Methode AenlicherPunktFenster.AchtunngFenster(i,j); ist ein einfaches Fenster mit vier Buttons.

Schönen Dank schon mal für die Hilfestellung


Gruß
Grimnir
 

Kevin94

Top Contributor
Hier ist die Lektüre des Quellcodes von JOptionPane sehr empfehlenswert, da kann man gut abschreiben, wenn man das selber implementieren will. Bevor ich erkläre wie es dort gemacht wird, sei aber noch gesagt, dass JOptionPane auch eine Methode anbietet um einen Dialog mit einer beliebigen Anzahl von Buttons mit selbst definierten Texten bietet.

So und nun zu der Magie: JOptionPane verwendet die Methode JDialog.show(). Diese Methode Gibts zwar auch in JFrame, funktioniert dort aber anders, weil in bei einem JDialog blockt diese Methode solange, bis das Fenster geschlossen wurde. Wie das Swing/Awt intern macht frag lieber nicht, ich will es gar nicht wissen, aber auf jeden Fall funktioniert das auch auf dem EDT ohne diesen zu blocken.
 

kaoZ

Top Contributor
Also ersteinmal schreibt man Variablen und Methoden per Konvention
Code:
lowerCamelCase

sprich

Java:
AenlicherPunktFenster.achtunngFenster(i,j);

ich gehen nun einfach mal davon aus das es sich um eine Statische Methode handelt, falls aber AenlicherPunktFenster eine Referenz auf ein Objekt einer anderen Klasse ist wird auch dies klein geschrieben.

Ein JOptionPane returned wie du der API Dokumentation entnehmen kannst eine Integer.
(Beispiel siehe unten), mit welchem du dann ganz bequem arbeiten kannst.

Du übergibst deinem optionPane einfach ein String array mit möglichen Optionen und erhälst nach Klick auf einen der Buttons einen Integer mit der Position des Strings im Array zurück anhand welchem der Button dann identifiziert wird und du dann in deiner Applikation z.B einen switch mit mehrerern cases nutzen kannst, hier mit einer Ausgabe des Buttons, bedenke aber das Arrays 0-Basiert sind und demnach der Integer der beim klick auf den ersten button zurückgegeben wird 0 ist !

Hier ein Beispiel :
Java:
public class Foo{
	
	public static void main(String[] args) {
	
		String[] options =  {"Yes", "No","Damn","Woot?!","crazy shit!"};
		String title = "Hey, ich bin ein Dialog!";
		String text = "Klick mich ich bin der Frühling";
		
		
		int result = JOptionPane.showOptionDialog(null, text, title, JOptionPane.INFORMATION_MESSAGE, JOptionPane.YES_NO_CANCEL_OPTION, null, options, null);
		
		switch(result){
		case 0 :
			System.out.println("Button 1");
			break;
		case 1 :
			System.out.println("Button 2");
			break;
			
			//usw...		
		}
    }
}
 
Zuletzt bearbeitet:

Grimnir

Mitglied
Perfekt!
Problem gelöst

Danke euch beiden

@ kaoZ
Also ersteinmal schreibt man Variablen und Methoden per Konvention lowerCamelCase

hast du natürlich Recht.

@ Kevin94

Die Lektüre des Quellcodes JOptionPane hab ich natürlich erstmal gesucht. Bin da aber nicht fündig geworden. Wo bekommt man die her?

Und richtig großen Dank für den Tippp:
Bevor ich erkläre wie es dort gemacht wird, sei aber noch gesagt, dass JOptionPane auch eine Methode anbietet um einen Dialog mit einer beliebigen Anzahl von Buttons mit selbst definierten Texten bietet.

weil einfach einfach einfach ist.

mit dem JDialog.show() is aber auch gut zu wissen.

Danke euch!
 

Kevin94

Top Contributor
Wenn du das JDK installiert hast, befindet sich im Installationsverzeichnis eine Datei src.zip mit dem Quellcode aller offiziellen Klassen, der ist für viele Suchen hilfreich. Manchmal sucht man sich aber auch zu Tode, weil alle Referenzen irgendwann zu Klassen aus den nichtöffentlichen sun.* Packages führen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
J Alle Vorkommen eines chars in einem Array durch einen anderen char ersetzen Java Basics - Anfänger-Themen 10
I Ersetzen eines Objektes in einer Liste? Java Basics - Anfänger-Themen 5
V Teile eines Strings intelligent ersetzen, kompliziert! Java Basics - Anfänger-Themen 4
D ersetzen eines Buchstaben durch mehrere in String Java Basics - Anfänger-Themen 8
S Ersetzen eines Zeichenstrings Java Basics - Anfänger-Themen 2
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
W Best Practice Tabulatoren verschiedener Länge ersetzen Java Basics - Anfänger-Themen 8
I String ersetzen, der Inhalt enthält Java Basics - Anfänger-Themen 4
T Zahl in Array ersetzen Java Basics - Anfänger-Themen 2
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
V Erste Schritte Vokale im Satz ersetzen Java Basics - Anfänger-Themen 20
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
S Wort suchen und ersetzen in einer Datei Java Basics - Anfänger-Themen 6
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
K BufferedReader für IOTools ersetzen? Java Basics - Anfänger-Themen 17
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
G Wert in Textdatei ersetzen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
M 2 Stellen in einem Array vergleichen und bei übereinstimmen eine davon ersetzen Java Basics - Anfänger-Themen 1
F In LinkedList einen Wert ersetzen oder neu einfügen Java Basics - Anfänger-Themen 7
Alex/89 String in einer txt ersetzen Java Basics - Anfänger-Themen 15
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
E RTF/DOC(x) textteile ersetzen/verändern Java Basics - Anfänger-Themen 0
K ArrayList durch ArrayList ersetzen Java Basics - Anfänger-Themen 5
T Strings ersetzen mit \ Java Basics - Anfänger-Themen 10
A Suchen und ersetzen Java Basics - Anfänger-Themen 13
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
A Text mit "Scanner" eingeben und Umlaute ersetzen Java Basics - Anfänger-Themen 7
hello_autumn Strings ersetzen... Java Basics - Anfänger-Themen 10
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
J Ersetzen Java Basics - Anfänger-Themen 4
Ananaskirsche Input/Output Platzhalter durch String in yml-Datein ersetzen Java Basics - Anfänger-Themen 5
AssELAss ß durch ss oder SS ersetzen Java Basics - Anfänger-Themen 10
J Input/Output String Suchen und Ersetzen Java Basics - Anfänger-Themen 8
M nach Typenkonvertierung Leerzeichen ersetzen Java Basics - Anfänger-Themen 2
G Line Separator in ArrayList durch ";" ersetzen Java Basics - Anfänger-Themen 4
L Wort in String ersetzen Java Basics - Anfänger-Themen 11
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
F Hexfolge in Byte Array ersetzen Java Basics - Anfänger-Themen 8
J Vokale ersetzen Java Basics - Anfänger-Themen 7
G GUI Label Werte ersetzen Java Basics - Anfänger-Themen 25
G String ersetzen Java Basics - Anfänger-Themen 5
G GUI JLabel ersetzen Java Basics - Anfänger-Themen 3
X String einzelne Buchstaben ersetzen Java Basics - Anfänger-Themen 4
C Variablen Variablen ersetzen Java Basics - Anfänger-Themen 7
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
D Slash durch zwei Backslash ersetzen Java Basics - Anfänger-Themen 11
S Button durch ImageIcon ersetzen Java Basics - Anfänger-Themen 9
C Elemente im StringBuffer ersetzen Java Basics - Anfänger-Themen 19
S im StringBuilder Zeichenketten ersetzen Java Basics - Anfänger-Themen 6
A String ersetzen Java Basics - Anfänger-Themen 6
B Char in String ersetzen Java Basics - Anfänger-Themen 15
A Datentypen Sonderzeichen / Strings ersetzen Java Basics - Anfänger-Themen 3
A Vokale im String ersetzen Java Basics - Anfänger-Themen 12
S Objekt durch Schnittstelle ersetzen Java Basics - Anfänger-Themen 2
F Substring mittels RegEx ermitteln/ersetzen? Java Basics - Anfänger-Themen 2
K Ersetzen von Teilstrings in ArrayList von Strings Java Basics - Anfänger-Themen 11
S Datentypen In mehreren Dateien Strings ersetzen Java Basics - Anfänger-Themen 14
A Doppelter Backslash durch einen einfachen Backslash ersetzen Java Basics - Anfänger-Themen 6
T Doppelte Anführungszeichen ersetzen?? Java Basics - Anfänger-Themen 4
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
J Große animierte Gif preloaden und solange mit einer nicht animierten ersetzen Java Basics - Anfänger-Themen 5
Daniel_L RegEx - Ersetzen ausschließen? Java Basics - Anfänger-Themen 6
S .txt einlesen->Zeilen ersetzen->neu.txt speichern Java Basics - Anfänger-Themen 13
S Backslash ersetzen. Java Basics - Anfänger-Themen 5
D mehrere Leerzeichen durch 1 Leerzeichen ersetzen Java Basics - Anfänger-Themen 3
M Panel ersetzen funktioniert nicht Java Basics - Anfänger-Themen 2
D Datentypen String Inhalte ersetzen Java Basics - Anfänger-Themen 8
N sich wiederholende arrayfelder ersetzen for-schleife Java Basics - Anfänger-Themen 9
C Variable Zeichenkette innerhalb einer Schleife ersetzen Java Basics - Anfänger-Themen 4
K Ersetzen von \" Zeichenfolge Java Basics - Anfänger-Themen 8
A Array einfügen, ersetzen und löschen Java Basics - Anfänger-Themen 1
G Enter-Zeichen aus String ersetzen Java Basics - Anfänger-Themen 5
J 4. vorkommende Zeichen ersetzen. Java Basics - Anfänger-Themen 7
V Bilder auf einer Seite markieren und ersetzen Java Basics - Anfänger-Themen 2
D Ascii-Code ersetzen mit Umlauten Java Basics - Anfänger-Themen 6
K Regex alle "<br><br>*" ersetzen Java Basics - Anfänger-Themen 2
G String Suchen ersetzen replace_all() Java Basics - Anfänger-Themen 6
W Zeichen ersetzen im InputStream Java Basics - Anfänger-Themen 3
C einen Link durch einen anderen Lunk ersetzen Java Basics - Anfänger-Themen 8
G Zeile in Textdatei ersetzen Java Basics - Anfänger-Themen 9
O Zeichen ersetzen Java Basics - Anfänger-Themen 3
F regex bei replaceAll und backslash ersetzen geht nicht. Java Basics - Anfänger-Themen 1
K String ersetzen Java Basics - Anfänger-Themen 10
C Rekursion durch Schleife ersetzen Java Basics - Anfänger-Themen 9
G Ersetzen von Zeichen "/" "" Java Basics - Anfänger-Themen 3
G Zeilenumbrüche in String durch <br> ersetzen? Java Basics - Anfänger-Themen 3
H String und HEX-Werte ersetzen Java Basics - Anfänger-Themen 8
J Zeichen ersetzen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben