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?
 
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.
 
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.
 
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!
 
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);				//--- 
													
			   
			
				}
			}
 
Ja, genau, das ist nur der Konstruktor. Der übrige Teil des Programms umfasst deutlich mehr Zeilen.
 
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😉
 
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?
 
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.

Neue Themen


Zurück
Oben