Hallo
mein Menü wird nicht angezeigt.
Ich bin das mal mit dem Debugger duchgegangen.
Die Variablen topMenubar und menuFile haben im
noch Werte
und anschließend beim
im MainFrame.java haben sie null!
Kann mir jemand Helfen?
Hier nun den Source-Code:
mein Menü wird nicht angezeigt.
Ich bin das mal mit dem Debugger duchgegangen.
Die Variablen topMenubar und menuFile haben im
Java:
public JMenuBar generateTopMenu() {
...
return topMenubar;
und anschließend beim
Java:
cmd.setView(view);
Kann mir jemand Helfen?
Hier nun den Source-Code:
Java:
package test;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JPanel;
public class MainFrame extends JFrame {
static final long serialVersionUID = 1;
private JFrame jFrame = null;
private JPanel jContentPane = null;
public static void main(String[] args) {
// Benutzerabhängigis Menü; Starte mit Default-Menü
new MainFrame("TESTMENU",1);
}
public MainFrame(String title, int user_id) {
super();
this.getJFrame().setTitle(title);
this.getJFrame().setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addJMenuBar(user_id);
}
public void addJMenuBar(int user_id) {
MainMenuSwingController cmd = new MainMenuSwingController();
MainMenuSwingView view = new MainMenuSwingView(cmd);
cmd.setView(view);
view.setVisible(true);
}
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setSize(new Dimension(800, 600));
jFrame.setFont(new Font("Dialog", Font.BOLD, 12));
jFrame.setName("mainframe");
jFrame.setVisible(true);
jFrame.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
jFrame.setVisible(false);
jFrame.dispose();
System.exit(0);
}
});
}
return jFrame;
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.setSize(800,600);
jContentPane.setVisible(true);
}
return jContentPane;
}
}
Java:
package test;
public class MainMenuSwingModel {
//private MainMenuSwingModel mms_model;
private MainMenuSwingView mms_view;
private MainMenuSwingController mms_controller;
public MainMenuSwingModel() {
}
public void login() {
System.out.println("MainMenuSwingModel: Aufruf von login()");
}
}
Java:
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class MainMenuSwingController implements ActionListener {
private MainMenuSwingModel mms_model;
private MainMenuSwingView mms_view;
public void setView(final MainMenuSwingView mm) {
this.mms_view = mm;
}
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
String cmd = e.getActionCommand();
if (cmd == null) {
return;
}
if (cmd == "login") {
mms_model.login();
return;
} else if (cmd == "exit") {
System.exit(0);
}
}
}
Java:
package test;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
public class MainMenuSwingView extends JMenuBar {
private static final long serialVersionUID = 2L;
private JMenuBar menubar;
private JMenuBar topMenubar;
private JMenu menuFile;
private JMenuItem mi;
private MainMenuSwingModel mms_model;
private MainMenuSwingController mms_cmd;
private final ActionListener mylistener;
public MainMenuSwingView(final ActionListener listener) {
this.mylistener = listener;
generateTopMenu();
}
//============================================================== Start-Menue
public JMenuBar generateTopMenu() {
//mylistener = (ActionListener) mms_cmd;
topMenubar = new JMenuBar();
menuFile = createFileMenu("Datei",'D');
topMenubar.add(menuFile);
//topMenubar.setVisible(true);
return topMenubar;
}
public JMenu createFileMenu(String label, char mnemonic) {
// Menü erzeugen
JMenu menu = new JMenu(label);
JMenuItem mi;
// Mnemonic
String mnemo = null;
if (mnemonic != ' ') {
mnemo = ""+mnemonic;
}
if (mnemo != null)
menu.setMnemonic(mnemo.codePointAt(0));
// Menüpunkte öffnen
mi = addNewMenuItem("Login", "login", 'i', 'i', mylistener);
menu.add(mi);
menu.add(new JSeparator());
mi = addNewMenuItem("Beenden", "exit", 'x', 'x', mylistener);
menu.add(mi);
return menu;
}
public JMenuItem addNewMenuItem(final String CMenuItemName,
final String ACmd, final char cShortcut, final char cAccelerationKey,
final ActionListener Listener) {
JMenuItem mi = new JMenuItem(CMenuItemName);
mi.setMnemonic(cShortcut);
mi.setAccelerator(KeyStroke.getKeyStroke(cAccelerationKey));
mi.setToolTipText(null);
mi.setIcon(null);
mi.setActionCommand(ACmd);
mi.addActionListener(mylistener);
return mi;
}
}