JFrame-Einstellungen ändern und übernehmen

Status
Nicht offen für weitere Antworten.
Hallo Leute.

Ich hab folgendes Problem. Ich habe eine JFrame mit mehreren Textfeldern und Comboboxen drauf. Diese sollen vom Benutzer auf Wunsch ein- oder ausgeschaltet(enabled/disabled) werden.
Diese Einstellungen nehme ich auf einem JDialog, der sich übers Menü aufrufen läßt, vor.

Beim starten des Programms lädt er automatisch die Einstellungen, die bei der letzten Sitzung gespeichert wurden. Alles aus einer Textdatei.

Wenn ich das Programm starte, über das Menü den Options-Dialog aufrufe und die Einstellungen vornehme, werden diese gespeichert. Leider übernimmt er die Einstellungen nicht sofort, trotz vorhandener Methode (siehe unten). Starte ich das Programm aber neu sind auch die Einstellungen übernommen.

Ich bin der Meinung daß das wahrscheinlich ziemlich nervig ist, nach jeder Einstellung das Programm neu zu starten. :wink:


Das ist ein Auszug aus meiner Klasse für den Options-Dialog:
Code:
...
	public void actionPerformed(ActionEvent e)
	{
		// JButton quelle = (JButton)e.getSource();
		String command = e.getActionCommand();
	
		if(command == "Abbrechen");
			dispose();
		if(command == "OK")
			AcceptSettings();
			
		System.out.println(command);
	}
	
	public void AcceptSettings()
	{
		getCheckedAndSave();				// Methode um die CheckBoxen zu überprüfen
		mf.EnableOrDisableTextFields();		// MainFrame-Methode zum Enablen/Disablen
	}
	
	public void getCheckedAndSave()
	{
		for(int i = 0; i < 17; i++)	// 17 Checkboxen
		{
			if(chb[i].isSelected())			// prüfe ob ausgewählt
				mf.ZeigeTextFeld[i] = true;	
			else
				mf.ZeigeTextFeld[i] = false;
			System.out.println(i+": "+mf.ZeigeTextFeld[i]);	// Kontrollausgabe
		}
		mf.SaveTextFieldSettingsToFile();	// MainFrame-Methode z. Speichern 
											// der Einstellungen

	}
...


Und ein Auszug aus der Klasse meines Haupt-Frames:

Code:
...
	public void EnableOrDisableTextFields()
	{
		LoadTextFeldSettingsFromFile();	// Methode zum Laden der Einstellungen
		
		if(ZeigeTextFeld[0]) 
			tfIDNr.enable();
		else
			tfIDNr.disable();
		
		if(ZeigeTextFeld[1])
			cbxAnrede.enable();
		else
			cbxAnrede.disable();
		
		if(ZeigeTextFeld[2])
			tfNName.enable();
		else
			tfNName.disable();
			
		System.out.println("\nEnableOrDisableTextFields()\n");	// Kontroll-Ausgabe
		//this.repaint(this.getX(), this.getY(), this.getWidth(), this.getHeight());
		repaint();
	}
...

Kann es sein das ich den JFrame neu zeichnen muss oder was mache ich falsch??? :bahnhof:

Bin für jede Hilfe dankbar...

CU Olli
 
B

Beni

Gast
1. Wenn Du z.B. hier eine Ausgabe machst, welchen Wert "ZeigeTextFeld[1]" hat, kommt dann das heraus, was du im Dialog eingestellt hast, oder was anderes?
Code:
		System.out.println( ZeigeTextFeld[1] );
		if(ZeigeTextFeld[1])
			cbxAnrede.enable();
		else
			cbxAnrede.disable();

Wenns was anderes ist, versuch rauszufinden wer das wo umändert...


Verschiedene Nörgeleien :wink:
2. enable und disable sind veraltet, benutze die Methode setEnabled.

3.
Code:
		if(chb[i].isSelected())			// prüfe ob ausgewählt
				mf.ZeigeTextFeld[i] = true;	
			else
				mf.ZeigeTextFeld[i] = false;

kann man auch schreiben als:
Code:
mf.ZeigeTextFeld[i] = chb[i].isSelected();

4. Dir ist schon klar, dass zuerst Datei schreiben, dann laden ein Umweg ist?
 
Hallo Beni.

Erstmal Danke an Beni für die schnelle Antwort und an alle anderen die sich schon Gedanken über mein Problem gemacht haben.

zu 1.
Ja. ZeigeTextFeld[] ist ein boolean-Array. Die Einstellungen auf dem OptionDialog werden übernommen. Die Änderungen werden auch in den Hauptframe übernommen, allerdings erst beim Neustart. Dann werden die (vorher) gespeicherten Einstellungen mitgeladen. Die Ausgabe mache ich an anderer Stelle (direkt nach dem ändern der Werte im boolean-Array) und die ist auch richtig.

zu 2.
Weiß ich, weiß ich... :wink:
Hab das auch vorher mit blabla.setEnabled() probiert. Dachte es läge vielleicht daran und habs mal so geändert.

zu 3.
OK. Das hört sich Klasse an. Da kann ich bestimmt ein "paar" Zeilen Code sparen, um Gischt in den Fingern vorzubeugen. :lol:

zu 4.
Das hatte ich mir gedacht, aber eigentlich sollte das ja auch nicht so sein. Die Einstellungen werden über den OptionDialog direkt ins boolean-array übernommen. Auch hier hab ich nur probiert ob es daran liegt.
Die Werte stimmen. Aber sie werden nicht übernommen beim Verlassen des OptionDialog, wie gesagt es nach dem Neustarten des Programms.


Ich denke das Problem ist, das der Frame beim Start gezeichnet und "eingestellt" wird. Er kann aber die Änderungen im Programm nicht übernehmen.
Neuzeichnen ???
Neue "Einstellung" für die Komponenten vornehmen???
Update ???
Refresh ???

Keine Ahnung wie ich das machen soll... :bahnhof:

Da es sich um mein Abschluss-Projekt handelt, wäre es sehr übel, wenn ich das hier nicht hinkriege...
[schild=13 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]P A N I K ! ! ![/schild]

Ich freue mich selbstverständlich auch über andere Lösungswege dieses Problems.


Danke Olli
 
B

Beni

Gast
Also ich sehe an dem Code nichts falsches... Kannst du vielleicht das ganze Projekt posten oder als ZIP irgendwohin werfen? Ich würde das gerne mal laufen lassen.
 
Hallo Beni.

Wahrscheinlich eine blöde Frage, aber wohin kann ich das denn posten??? :oops:
Ich finde es echt Klasse das du dich so mit dem Problem auseinandersetzt, das ist doch mal 'ne Hilfe :D

CU Olli
 
B

Beni

Gast
Direkt hier ins Forum, aber bitte nur, wenns nicht 100'000 Zeilen sind... sonst wird hier ein ZIP-Archiv bevorzugt :wink: (Da musst du selbst irgendwo ein bisschen Webspace haben, und falls nicht, schick mir eine Nachricht).
 
Das Problem ist: Es sind 5 Dateien und insgesamt ca. 1000 Zeilen, also vermutlich "etwas" zu viel.

Hab zwar ein bisschen Webspace bei AOL (Schleichwerbung :wink: ) aber noch nix eingerichtet.
Ich weiß auch nicht ob's bei AOL die Möglichkeit gibt, Datei-Download anzubieten??? ???:L

CU Olli
 
B

Beni

Gast
Ach, schicks einfach hierhin: benjamin_sigg( ät )gmx.ch , wenn ich den Fehler nicht finde, stell ichs gleich hoch :wink:
 
B

Beni

Gast
Und den Fehler gefunden: du hast mehrere Instanzen des MainFrames!

Wenn du ein OptionFrame erstellst, legst du auch eine neue Instanz des MainFrames an:
Code:
public class optionframe extends JDialog implements ActionListener
{
	MainFrame mf = new MainFrame(); // das ist eines zuviel ;-)

Stattdessen benütigst du das original-Frame. Ich habe das so umgeschrieben:
Code:
public class optionframe extends JDialog implements ActionListener
{
	MainFrame mf;
	
     // verschiedene Variablen...
	
	public optionframe(MainFrame parent, String title, boolean modal)
	{
		super(parent, title, true);
		mf = parent;
 
Ahhhh.... [schild=13 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]*VERZWEIFEL*[/schild]

Das hatte ich vorher so. Problem dabei war, daß ich auf die Member der MainFrames nicht zu greifen konnte.

Das heißt speziell auf das boolean -Array, da bekam ich bei Änderungen im OptionDialog immer ne Exception.

Wenn ich also versucht habe so ...
Code:
...
mf.ZeigeTextFeld[x];
...

... darauf zuzugreifen, haut mir Eclipse einen Haufen Exceptions um die Ohren. Oder hat es bei dir so funktioniert. :shock:

Ich werde es so nochmal versuchen und wenns nicht klappt, stell ich mal die Fehlermeldungen hier rein.

CU Olli

PS: Ich habe irgendwie öfter das Problem, daß ich zu umständlich denke. Vielleicht auch mangels Erfahrung in Java. ???:L Geht das auch aus dem Programm hervor, wenn ich mal fragen darf. Oder ist da alles soweit "in Ordnung" ???



EDIT:

Sorry hatte folgendes übersehen:

Code:
public optionframe(MainFrame parent, String title, boolean modal)	{		

super(parent, title, true);		
mf = parent;
...


ES FUNKTIONIERT... [schild=4 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]RIESENDANK AN BENI...[/schild]


Danke für den gemachten Aufwand, du hast mir sehr geholfen.

CU Olli
 
B

Beni

Gast
armerpraktikant hat gesagt.:
... darauf zuzugreifen, haut mir Eclipse einen Haufen Exceptions um die Ohren. Oder hat es bei dir so funktioniert. :shock:
Ich habs nur so verändert, dass eine andere Instanz von MainFrame benutzt wird.

[Edit: dann muss ich ja nichts mehr sagen]

armerpraktikant hat gesagt.:
PS: Ich habe irgendwie öfter das Problem, daß ich zu umständlich denke. Vielleicht auch mangels Erfahrung in Java. ???:L Geht das auch aus dem Programm hervor, wenn ich mal fragen darf. Oder ist da alles soweit "in Ordnung" ???
Ich finde den Code nicht zu kompliziert (ok, es sind auch nur 5 Klassen :wink:). Dieser Umweg über die Datei gefällt mir aber immer noch nicht 8)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
Paty JFrame anfänger bräuchte hilfestellung AWT, Swing, JavaFX & SWT 7
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
Mausposition relativ zu JFrame bekommen AWT, Swing, JavaFX & SWT 6
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
N CPU Belastung bei offenem JFrame auf fast 100% AWT, Swing, JavaFX & SWT 15
N Knopf ganz oben (JFrame) AWT, Swing, JavaFX & SWT 9
N JFrame löscht alles, wenn groß gemacht AWT, Swing, JavaFX & SWT 9
N jFrame löscht am Ende des Threads alles AWT, Swing, JavaFX & SWT 2
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
E JFrame resizing AWT, Swing, JavaFX & SWT 2
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Tabelle in JFrame einfügen AWT, Swing, JavaFX & SWT 1
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Swing Design des oberen Balkens in JFrame AWT, Swing, JavaFX & SWT 2
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
R Swing Ein gezeichneten String aus dem JFrame löschen AWT, Swing, JavaFX & SWT 5
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
F JFrame zeigt nicht alle Elemente auf anhieb an AWT, Swing, JavaFX & SWT 4
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
J BackgroundJPanel passt sich dem JFrame nicht an AWT, Swing, JavaFX & SWT 7
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
K JFrame bei JUnit Tests AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
JR2205 Swing JxMaps Einbindung Netbeans JFrame AWT, Swing, JavaFX & SWT 4
Zar von Domarus JFrame zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 3
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
M Limit für JFrame-Vergrößerung AWT, Swing, JavaFX & SWT 8
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
Ghostman1711 JFrame closing AWT, Swing, JavaFX & SWT 3
R Engineklasse mit JFrame AWT, Swing, JavaFX & SWT 4
M Default-WindowListener JFrame entfernen (Stichwort: iconified) AWT, Swing, JavaFX & SWT 4
ms_cikar Jframe zurück zu frame1 AWT, Swing, JavaFX & SWT 14
C Jframe ohne Rahmen AWT, Swing, JavaFX & SWT 3
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
R JFrame schließen AWT, Swing, JavaFX & SWT 9
P Swing JFrame minimiert sich bei Doppelklick auf die Titel-Leiste AWT, Swing, JavaFX & SWT 17
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
I JFrame an Bildschirm anpassen AWT, Swing, JavaFX & SWT 1
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
P JFrame schrumpft bei Doppelklick auf die Titelleiste AWT, Swing, JavaFX & SWT 0
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
D JFrame mindestgröße erzwingen AWT, Swing, JavaFX & SWT 2
H Swing JFrame mit JFXPanel NPE bei dispose() AWT, Swing, JavaFX & SWT 6
C Swing Borderlayout im JFrame AWT, Swing, JavaFX & SWT 4
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
G Swing JFrame öffnen bei Pidgin Benachrichtigung AWT, Swing, JavaFX & SWT 5
OlafHD JLabel im JFrame Zentrieren AWT, Swing, JavaFX & SWT 2
S Kein JFrame unter Mac? AWT, Swing, JavaFX & SWT 8
G Resize JFrame AWT, Swing, JavaFX & SWT 8
J Teiltransparenter JFrame mit Blur-Effekt AWT, Swing, JavaFX & SWT 2
K Bild in JFrame AWT, Swing, JavaFX & SWT 2
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
I Neues JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
S JFrame -> setVisible AWT, Swing, JavaFX & SWT 3
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
I Swing JMenuBar auch unten am JFrame? AWT, Swing, JavaFX & SWT 2
K SplashScreen neben JFrame behalten AWT, Swing, JavaFX & SWT 10
F Swing JLabel in JFrame anpassen AWT, Swing, JavaFX & SWT 20
B Swing Unterteiltes JFrame mit Bild in der Mitte AWT, Swing, JavaFX & SWT 4
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
T Applet Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 8
V JFrame wird nicht richtig angezeigt! AWT, Swing, JavaFX & SWT 2
I JFrame neu zeichnen, nicht überzeichnen! AWT, Swing, JavaFX & SWT 2
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
W Swing Farbige JPanels auf JFrame werden nicht gezeigt. Was mach ich falsch? AWT, Swing, JavaFX & SWT 7
Z Java Draw -JFrame finde nicht die Mitte & höhe, breite AWT, Swing, JavaFX & SWT 7
O Swing JFrame Anzeigeproblem AWT, Swing, JavaFX & SWT 2
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16

Ähnliche Java Themen


Oben