Warum aus child heraus nicht änderbar?

babuschka

Top Contributor
Hallo,

habe ne kleine Java-Aufgabe in der ich jetzt gern eine Art Menü erstellen möchte. Dafür hab ich schon ein Fenster hinbekommen, eine Menüzeile oben, einen Eventlistener...also eigentlich passt alles, bis auf eine Sache. Hier aber erstmal der Code:

Java:
package de.gui;

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class Fenster extends JFrame {
	
	private Container contentPane;
	
	public Fenster() {
		
		/*
		 * Titel des Fensters festlegen.
		 */
		super("Ein Fenster");
		
		/*
		 * Größe festlegen
		 */
		setSize(400, 200);
		setLocation(100, 100);
		/*
		 * Eigenschaften festlegen.
		 */
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		/*
		 * Contentpane festlegen
		 */
		contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));
		
		/*
		 * Menü einfügen
		 */
		JMenuBar bar = new JMenuBar();
		JMenuBarListener jMenuListen = new JMenuBarListener(this);
		
		/*
		 * Menüpunkt "Datei" hinzufügen
		 */
		JMenu dateiMenu = new JMenu("Datei");
		bar.add(dateiMenu);
		
		JMenuItem oeffnen = new JMenuItem("Öffnen");
		oeffnen.setActionCommand(JMenuBarListener.OPEN);
		oeffnen.addActionListener(jMenuListen);
		dateiMenu.add(oeffnen);
		
		JMenuItem speichern = new JMenuItem("Speichern");
		speichern.setActionCommand(JMenuBarListener.SAVE);
		speichern.addActionListener(jMenuListen);
		dateiMenu.add(speichern);
		
		/*
		 * Menüpunkt "Hilfe" hinzufügen
		 */
		JMenu hilfeMenu = new JMenu("Hilfe");
		bar.add(hilfeMenu);
		
		JMenuItem hilfe = new JMenuItem("Hilfe");
		hilfe.setActionCommand(JMenuBarListener.HELP);
		hilfe.addActionListener(jMenuListen);
		hilfeMenu.add(hilfe);
		
		JMenuItem kontakt = new JMenuItem("Kontakt");
		kontakt.setActionCommand(JMenuBarListener.CONTACT);
		kontakt.addActionListener(jMenuListen);
		hilfeMenu.add(kontakt);
		
		/*
		 * JMenuBar setzen
		 */
		setJMenuBar(bar);
		
		/*
		 * Startbildschirm laden
		 */
		loadContent("start");
		
	}
	
	public void loadContent(String what){
		System.out.println("Lade: " + what);
		
		/*
		 * Inhalt einfügen
		 */
		JButton helloWorldButton = new JButton("Ich zeige jetzt: " + what);
	    
	    contentPane.removeAll();
	    contentPane.add(helloWorldButton);
		
	}

}

Dazu passend der Listener:

Java:
package de.gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JMenuBarListener implements ActionListener {

	
	public static String OPEN = "open";
	public static String SAVE = "save";
	public static String HELP = "help";
	public static String CONTACT = "contact";
	
	private Fenster parent;
	
	public JMenuBarListener(Fenster parent) {
		this.parent = parent;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals(OPEN)) {

			parent.loadContent("open");
		}else if (e.getActionCommand().equals(SAVE)) {

			parent.loadContent("save");
		}else if (e.getActionCommand().equals(HELP)){

			parent.loadContent("help");
		}else if (e.getActionCommand().equals(CONTACT)){

			parent.loadContent("kontakt");
		}
	}
	
}


Also wenn jemand einen Menüpunkt anklickt, rufe ich schlussendlich die Methe loadContent auf und möchte dort jetzt erstmal nur nen Button anzeigen. (erstmal testweise).

Der erste Aufruf mit loadContent("start") ist absolut kein Problem. Aber aus dem listener heraus geht es nicht. Also sobald ich was anklicke bleibt meine GUI gleich, nichts ändert sich.
Das loadcontent aber wird korrekt aufgerufen, da die system.print...-Ausgabe kommt.

Habt ihr ne Ahnung woran das liegt? Also warum kann ich aus dem eventlistener zwar die methode aufrufen, diese macht auch die system.print...-Ausgabe, aber ändert die GUI nicht?

Danke für die Hilfe...:rtfm:
 

Mofi

Bekanntes Mitglied
Also so spontan würd ich sagen, dass du noch ein validate() und repaint brauchst, nachdem du deinen Button hinzugefügt hast.
Ich mein nach [Java]contentPane.add(helloWorldButton);[/code]

Kann es allerdings nicht testen, da dieser Rechner 5 Minuten braucht bis NetBeans geladen ist...
 

MySelV

Aktives Mitglied
Auch wenn ich noch nicht viel in Richtung AWT/SWT außerhalb von eclipseRCP gemacht habe, würde ich mal raten, dass ein redraw() oder ähnliches notwendig ist.
 

babuschka

Top Contributor
Ah ok...danke. Das wäre jetzt mein Versuch:

Java:
contentPane.removeAll();
contentPane.add(helloWorldButton);
contentPane.validate();

Oder gehts noch eleganter?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hallolu PONG Parent-Child connection Java Basics - Anfänger-Themen 3
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
E Daten zwischen Child-JFrame und Parent-JFrame austauschen Java Basics - Anfänger-Themen 2
G XML nächstes Child element (gleicher name) Java Basics - Anfänger-Themen 5
V parent-child Struktur bei Listenern Java Basics - Anfänger-Themen 3
sserio Binomialkoeffizient, wie findet man k und n heraus Java Basics - Anfänger-Themen 18
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
S setText aus anderer class heraus Java Basics - Anfänger-Themen 6
K Compiler-Fehler Objektmethode aus einer statischen Methode heraus aufrufen Java Basics - Anfänger-Themen 34
J Classpath Programm aus Programm heraus starten Java Basics - Anfänger-Themen 1
U jar aus RAM heraus starten Java Basics - Anfänger-Themen 21
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
Y Datei mit relativem Dateipfad per FileReader aus .JAR heraus auslesen Java Basics - Anfänger-Themen 4
J JavaFX aus Java-Application heraus starten Java Basics - Anfänger-Themen 7
I Jar aus Java heraus starten. Java Basics - Anfänger-Themen 12
Y .jar aus applikation heraus starten? Java Basics - Anfänger-Themen 3
E Word aus Java heraus öffnen und in den Vordergrund holen Java Basics - Anfänger-Themen 2
I auf Textfeld aus anderer Klasse heraus zugreifen Java Basics - Anfänger-Themen 2
S Main-Methode aus anderer Klasse heraus starten Java Basics - Anfänger-Themen 8
E Variable aus einer Methode heraus in eine andere Klasse übergeben Java Basics - Anfänger-Themen 13
J this aus eingebetteter implementation heraus Java Basics - Anfänger-Themen 2
W iText - Layer aus PDF heraus löschen Java Basics - Anfänger-Themen 1
A JRadioButton aus Code heraus selectieren. Java Basics - Anfänger-Themen 4
A [gelöst]Aus der Klasse heraus auf ein anderes Objekt zugreifen Java Basics - Anfänger-Themen 4
J Java Applikation aus Applet heraus starten Java Basics - Anfänger-Themen 4
L Zeilenwechselsequenz erkennen aus der Datei heraus Java Basics - Anfänger-Themen 2
G Umgebungsvariable aus Java Programm heraus setzen Java Basics - Anfänger-Themen 4
G Webseite aus Java heraus laden Java Basics - Anfänger-Themen 3
S Rückgabe eines eingelesenen 2D Arrays aus Klasse heraus Java Basics - Anfänger-Themen 3
G jProgressBar value aus anderer Klasse heraus verändern Java Basics - Anfänger-Themen 7
P Fenster schliessen auf Menue heraus Java Basics - Anfänger-Themen 2
R Dateien aus Java heraus öffnen Java Basics - Anfänger-Themen 9
F Problem mit auführen einer .bat Datei aus Java heraus Java Basics - Anfänger-Themen 24
D exe AUS Java heraus starten Java Basics - Anfänger-Themen 4
G Aufruf einer .bat-Datei aus Java heraus Java Basics - Anfänger-Themen 6
G Andere Anwendung aus Java heraus steuern Java Basics - Anfänger-Themen 3
M aus Applet heraus 2. Fenster öffnen und Parameter übergeben? Java Basics - Anfänger-Themen 18
H Objecte aus einer Liste heraus benutzen ? Java Basics - Anfänger-Themen 3
M Klassen zur Laufzeit laden, aus einer jar heraus. Java Basics - Anfänger-Themen 14
V Erste Ziffer aus einer dreistelligen "Zahl" heraus Java Basics - Anfänger-Themen 5
H Verzeichnis lesen, und nur unterverzeichnisse heraus filtern Java Basics - Anfänger-Themen 6
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
G Worddatei aus jar-File heraus starten Java Basics - Anfänger-Themen 8
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
missy72 Erste Schritte (nicht) Deterministischer endlicher Automat Java Basics - Anfänger-Themen 9
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben