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:
Dazu passend der Listener:
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:
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: