JDialog und 'Inhalte' schliessen bzw. leeren

Status
Nicht offen für weitere Antworten.

Spoocky

Aktives Mitglied
Hallo an alle Javamaniacs,

ich habe folgendes kleines Problem: Ich habe einen JDialog, der durch einen Button new ... setvisible(true) gesetzt wird. Innerhalb dieses JDialogs werden dann Variablen mit Inhalten versehen. Danach wird der JDialog mit dispose() geschlossen. Dabei wird der JDialog aber nicht vollständig vernichtet, denn wenn man später die Variablen benutzt und hat vorher mehrmals den JDialog aufgerufen und mehrmals mit Inhalten gefüllt, sind alle Eingaben 'irgendwo' gespeichert worden. Ich möchte aber nur gerne die letzte Eingabe speichern.

Hat jemand eine Idee woran das liegen kann?
 

AlArenal

Top Contributor
Wenn du #dispose auf den Dialog machst, bin ich ziemlich sicher, dass der Dialog danach weg ist ;)

Woher sollen wir nun aber wissen wo bei dir 'irgendwo' ist und was du mit dein Eingaben machst? Meine Vermutung: Du speicherst munter einfach alles, weil die die Eingaben jedesmal einfach nur anhängst. Aber da ich nicht mit hellseherischen Fähigkeiten gesegnet bin (das kommt erst ab Level 40), kann ich da auch nichts genaueres zu sagen.
 

Spoocky

Aktives Mitglied
Wenn ich eine Eingabe mache und dann den Dialog schliesse, danach den Dialog wieder öffne und ohne Eingabe Schließe und danach den Variablen-Inhalt speichere, dann wird er 2x gespeichert. Öffne und Schließe ich den Dialog 8x, dann wird auch 8x gespeichert.
 

AlArenal

Top Contributor
Wenn du möchtest, dass dein Auto untersucht und repariert wird, solltest du nicht mit dem Bus zur Werkstatt fahren....

Will sagen: Ohne Code nix los!
 

Spoocky

Aktives Mitglied
hier der Code:

Code:
		class DatenbankProbanden extends JDialog {
			
			private static final long serialVersionUID = 2646319825833993564L;
			// JDialog datenbankExport = new JDialog(f, true);
			
			public DatenbankProbanden() {
				
			   Container containerDatenbank = this.getContentPane();							//--- legt die ContentPane auf den Container c
			   GridBagLayout gbl3 = new GridBagLayout();									//--- erzeugt ein GridBagLayout "gbl"
			   containerDatenbank.setLayout(gbl3);														//--- setzt das "gbl" als aktuelles Layout
			   
			   this.setModal(true);
			   this.setResizable(false);									//--- legt fest, dass das hauptfenster nicht in der Grösse zu verändern ist
			   this.setTitle("...in Datenbank exportieren..."); 						//--- legt den Titel des hauptfensters fest
			   this.setBounds(350, 200, 700, 600);							//--- bestimmt Ausgangspunkt und Ausmaße des fensters
			  
			   String datenbankText = new String ("Probandinformationen: \n");  //--- erzeugt die Variable "infos" als String
					
			   JLabel text = new JLabel(datenbankText);
			   text.setFont(new Font("Verdana", Font.BOLD, 16));
			   text.setPreferredSize(new Dimension(350, 100));
			   
			   probandSuchen.setPreferredSize(new Dimension(350,20));
			   probandenUebernehmen.setEnabled(false);
			   nameProband.setEnabled(false);
			   vornameProband.setEnabled(false);
			   geburtsdatumProband.setEnabled(false);
			   groesseProband.setEnabled(false);
			   geschlechtProband.setEnabled(false);
			   telefonProband.setEnabled(false);
			   emailProband.setEnabled(false);
			   
			   probandenAnlegen.setEnabled(false);
			  
			   
			   probandenFinden();
            

 			   
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, text, 							0, 0, 0, 1, 1, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, probandSuchen, 					0, 1, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, probandAnzeigen, 						1, 1, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, neuerProband, 					2, 1, 1, 1, 0, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JLabel(" "), 				0, 2, 0, 1, 1, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JTextField("Name:"), 		0, 3, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, nameProband,			 			1, 3, 1, 1, 1, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, probandenAnlegen, 				2, 3, 1, 1, 0, 0);
			  
			   addComponentHauptfenster (containerDatenbank, gbl3, new JTextField("Vorname:"), 		0, 4, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, vornameProband, 					1, 4, 1, 1, 0, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JTextField("Geburtsdatum: [TT.MM.JJJJ]"), 0, 5, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, geburtsdatumProband, 			1, 5, 1, 1, 0, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JTextField("Größe: [cm]"), 		0, 6, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, groesseProband, 					1, 6, 1, 1, 0, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JTextField("Geschlecht: [m/w]"), 	0, 7, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, geschlechtProband, 				1, 7, 1, 1, 0, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JTextField("Telefon:"), 		0, 8, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, telefonProband, 					1, 8, 1, 1, 0, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JTextField("E-Mail:"), 		0, 9, 1, 1, 0, 0);
			   addComponentHauptfenster (containerDatenbank, gbl3, emailProband, 					1, 9, 1, 1, 0, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JLabel(" "), 				0, 10, 0, 1, 1, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, new JLabel(" "), 				0, 11, 0, 1, 1, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, probandenUebernehmen, 			0, 12, 0, 1, 1, 0);
			   
			   addComponentHauptfenster (containerDatenbank, gbl3, datenbankProbandenAbbruch,		0, 13, 0, 1, 1, 0);
			   
			   
			   probandAnzeigen.addActionListener(new ActionListener() {						
			         public void actionPerformed(ActionEvent e) {
			        	 
			        	 //--- extrahiere den Primärschlüssel aus der Auswahl
			        	 String ID = probandSuchen.getSelectedItem().toString();
			        	 String[] probandDaten = ID.split( "\\~");
			        	 String probandID = probandDaten[0];
			        	 System.out.println(probandID);
			        	 
			        	 //--- fülle die Felder mit den Inhalten aus db
			        	 nameProband.setText(probandDaten[1]);
			        	 nameProband.setDisabledTextColor(Color.BLUE);
			        	 vornameProband.setText(probandDaten[2]);
			        	 vornameProband.setDisabledTextColor(Color.BLUE);
			        	 geburtsdatumProband.setText(probandDaten[3]);
			        	 geburtsdatumProband.setDisabledTextColor(Color.BLUE);
			        	 groesseProband.setText(probandDaten[4]);
			        	 groesseProband.setDisabledTextColor(Color.BLUE);
			        	 geschlechtProband.setText(probandDaten[5]);
			        	 geschlechtProband.setDisabledTextColor(Color.BLUE);
			        	 telefonProband.setText(probandDaten[6]);
			        	 telefonProband.setDisabledTextColor(Color.BLUE);
			        	 emailProband.setText(probandDaten[7]);
			        	 emailProband.setDisabledTextColor(Color.BLUE);
			        	 
			        	 probandenAnlegen.setEnabled(false);
			        	 
			        	 probandenUebernehmen.setEnabled(true);
			         }});
			   
			   neuerProband.addActionListener(new ActionListener() {						
			         public void actionPerformed(ActionEvent e) {
			        	 //--- TO DO: Sicherheitsabfrage zur Datenbank, ob Proband bereits vorhanden!!!
			        	 //--- alle TextFelder werden beschreibbar gemacht
			        	 	nameProband.setEnabled(true);
			        	 	vornameProband.setEnabled(true);
			        	 	geburtsdatumProband.setEnabled(true);
			        	 	groesseProband.setEnabled(true);
			        	 	geschlechtProband.setEnabled(true);
			        	 	telefonProband.setEnabled(true);
			        	 	emailProband.setEnabled(true);
			        	 	probandenUebernehmen.setEnabled(false);
			        	 	datenbankProbandenAbbruch.setEnabled(true);
			        	 //--- alle Textfelder werden mit "" gefüllt	
				        	nameProband.setText("");
				        	vornameProband.setText("");
				        	geburtsdatumProband.setText("");
				        	groesseProband.setText("");
				        	geschlechtProband.setText("");
				        	telefonProband.setText("");
				        	emailProband.setText("");
				        	
				        	probandenAnlegen.setEnabled(true);
			         }});
			   
			   probandenAnlegen.addActionListener(new ActionListener() {						
			         public void actionPerformed(ActionEvent e) {			        	 
			               neuenProbandenAnlegen();	  
						   probandenFinden();
						   probandenAnlegen.setEnabled(false);
			           
			         }});
			   
			   probandenUebernehmen.addActionListener(new ActionListener() {						
			         public void actionPerformed(ActionEvent e) {
			        	 String[] optionen = {"Ja", "Nein"};
			    		  int n = JOptionPane.showOptionDialog(null, "Sind ALLE Daten RICHTIG eingegeben?", "Prüfung", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, optionen, optionen[0]);
			    		  		
			    		  	if (n == JOptionPane.YES_OPTION) {
			    		  		//--- alles richtig eingegeben!
			    		  		dateiWaehlen.setEnabled(true);
			    		  		datenbankProbandenInfo.setBackground(Color.GREEN);
			    		  		dbVerbindungTrennen();					//--- Trennt die Verbindung zur Datenbank
			    		  		dispose();
			    		  	}
			    		  	else {
			    		  		//--- zurück zur Eingabe!
			    		  	}
			         }});
			   
			   
			   datenbankProbandenAbbruch.addActionListener(new ActionListener() {						
			         public void actionPerformed(ActionEvent e) { 
			        	 //datenbank.setEnabled(false);
			        	 datenbankProbandenInfo.setBackground(Color.RED);
			        	 nameProband.setText("");
				         vornameProband.setText("");
				         geburtsdatumProband.setText("");
				         groesseProband.setText("");
				         geschlechtProband.setText("");
				         telefonProband.setText("");
				         emailProband.setText("");
				         
			        	 dbVerbindungTrennen();							//--- Trennt die Verbindung zur Datenbank
			        	 dispose();
			         }});
			   
			   this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);				//--- 
													
			   
			
				}
			}
 
S

Spoock

Gast
Ja, genau, das ist nur der Konstruktor. Der übrige Teil des Programms umfasst deutlich mehr Zeilen.
 

AlArenal

Top Contributor
Ja, dann tuts mir Leid. Vielleicht ist jemand anderes in der Lage sich gedanklich in deinen Rechner zu beamen. Ich habe Level 40 wie gesagt noch nicht erreich t;)
 

Leroy42

Top Contributor
und wo wird jetzt was gespeichert? :shock:

So kommen wir nicht weiter. Versuch doch entweder einmal
genau die Zeilen zu posten, die das Speichern erledigen
oder schreib' ein minimales Programm (Nur eine Eingabe, ...)
das den Fehler reproduziert und poste dessen Code

Und es ist immer noch nicht klar, was du unter wird mehrfach gespeichert
eigentlich verstehst. Wohin wird denn wie gespeichert?
 

Spoocky

Aktives Mitglied
ok, versuche das ganze mal etwas anders zu beschreiben:

In meinem Programm wird durch Klick auf einen Button die oben gezeigte class aufgerufen:

Code:
class DatenbankProbanden extends JDialog {
...
}

macht man dies nun mehrmals hintereinander, dann kommt nach dem schließen des Dialogs - praktisch beim letzten mal 'akzeptieren'- genau dieses Fenster genau so viel Mal, so oft man vorher auf den Button geklickt hat.

Ist das verständlicher?
 
Status
Nicht offen für weitere Antworten.
Ä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
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
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

Ähnliche Java Themen


Oben