Swing Die Menüleiste erscheint nicht

Status
Nicht offen für weitere Antworten.

gani

Mitglied
Hallo

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;
noch Werte
und anschließend beim
Java:
cmd.setView(view);
im MainFrame.java haben sie null!

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;
    }
}
 
S

SlaterB

Gast
Komponenten für sich visible setzten bringt nichts, Controller spielen erstmal auch keine Rolle,
sie müssen schon mit einem sichtbaren JFrame verknüpft sein

jFrame.setJMenuBar(bar);
How to Use Menus (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

-------

edit:
> public class MainMenuSwingView extends JMenuBar {
+

> public JMenuBar generateTopMenu() {
> [..]
> topMenubar = new JMenuBar();

das darf so nicht sein, wenn du von JMenuBar erbst, dann ist MainMenuSwingView die MenuBar,
dann nicht noch ein weiteres MenuBar-Objekt erzeugen
 
Zuletzt bearbeitet von einem Moderator:

gani

Mitglied
Den Source-Code habe ich jetzt wie folgt geändert
Java:
public class MainMenuSwingView extends JMenuBar {
...
	public MainMenuSwingView(final ActionListener listener) {
		this.mylistener = listener;
		generateTopMenu();
	}
	private void generateTopMenu() {
		menuFile = createFileMenu("Datei",'D');
		add(menuFile);
	}
...

Java:
...
public class MainFrame extends JFrame {
...	
	public MainFrame(String title, int user_id) {
...
		this.getJFrame().setJMenuBar(addJMenuBar(user_id));   //  Fehlermeldung
		//this.setJMenuBar(addJMenuBar(user_id));

		//this.addJMenuBar(user_id);
	}

Wenn MainMenuSwingView die MenuBar ist, warum beschwert er sich in der Zeile:
this.getJFrame().setJMenuBar(addJMenuBar(user_id)); ?
 
S

SlaterB

Gast
weil addJMenuBar den Rückgabewert void hat, nicht die MenuBar zurückgibt

-----

this.getJFrame() ist übrigens wieder genausoschlimm,
this ist das JFrame, alles sollte in this rein, nicht in ein separates JFrame
oder MainFrame nicht von JFrame erben lassen, auch denkbar
 
Zuletzt bearbeitet von einem Moderator:

gani

Mitglied
Eine Frage gestellt und schon habe ich etwas mehr über "extends" erfahren. DANKE.

Jetzt erbt mein MainFrame nicht mehr von JFrame und addJMenuBar(int user_id) gibt die MenuBar zurück,
jedoch erscheint immer noch nicht die Menüleiste.

Java:
public class MainFrame {
	...
	private JFrame jFrame = null;
	private JMenuBar jMenuBar = 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();
		getJFrame().setTitle(title);
		getJFrame().setVisible(true);
		getJFrame().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getJFrame().setJMenuBar(addJMenuBar(user_id));
	}
	
	public JMenuBar addJMenuBar(int user_id) {
	    MainMenuSwingController cmd = new MainMenuSwingController();
	    MainMenuSwingView view = new MainMenuSwingView(cmd);
        cmd.setView(view);
        view.setVisible(true);
        
        return view;
	}
 
S

SlaterB

Gast
ich vermute:
getJFrame().setVisible(true);
immer als letztes nach Setzen aller Komponenten aufrufen

endgültig läßt sich das nur mit vollständigem Code sagen,
möglichst kurz, nur eine Klasse, bitte auf Controller verzichten, statt MainMenuSwingView tut es testweise auch ein einfaches new JMenuBar mit vielleicht einem kleinen Test-Menü-Eintrag
 

gani

Mitglied
Also ein UI-Model anstatt ein MVC Model?

Ich habe das MVC Model gewählt weil
je nach Userlevel verschiedene Menüs aufgerufen werden sollen.

Ist das UI-Model auch beim großen Menü übersichtlich?
 
S

SlaterB

Gast
worum gehts denn jetzt auf einmal?
die letzten Tipps waren doch nur die Position eines kleinen Befehls,


und zum Thema Model habe ich gesagt, dass du das bitte nicht posten sollst, falls du ein Testprogramm postest,
denn das Model hat mit dem Anzeigeproblem wahrscheinlich nix zu tun,
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JMenuItem-Shortcut WENN Menüleiste verborgen ist AWT, Swing, JavaFX & SWT 4
J JApplet schneidet Menüleiste ab AWT, Swing, JavaFX & SWT 4
M Im Frame wird nur die Menüleiste erstellt und nicht die Tabelle? AWT, Swing, JavaFX & SWT 3
H Swing Trennlinie wie bei Menüleiste erzeugen AWT, Swing, JavaFX & SWT 2
M Schrift in Menüleiste mit Office L&F AWT, Swing, JavaFX & SWT 4
M Menüleiste verschwindet AWT, Swing, JavaFX & SWT 6
P Hintergrund von Menüleiste ändern AWT, Swing, JavaFX & SWT 5
K Positionierung in der Menüleiste AWT, Swing, JavaFX & SWT 3
G Frame mit Menüleiste AWT, Swing, JavaFX & SWT 4
S e(fx)clipse erscheint nicht im Marketplace, lässt sich nicht installieren AWT, Swing, JavaFX & SWT 16
L JTextField erscheint erst nach Veränderung der Framegröße AWT, Swing, JavaFX & SWT 5
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
stylegangsta Splash Screen erscheint nicht AWT, Swing, JavaFX & SWT 30
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
D Button erscheint nicht AWT, Swing, JavaFX & SWT 2
B Swing BalloonTip erscheint nicht in den ersten Zeilen einer JXTable AWT, Swing, JavaFX & SWT 4
A Swing JSlider erscheint doppelt AWT, Swing, JavaFX & SWT 2
T AWT Graphics G Kein Text erscheint warum? AWT, Swing, JavaFX & SWT 12
L Swing JPanel erscheint erst beim Vergrößern AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Panel-Zeichnung erscheint nicht AWT, Swing, JavaFX & SWT 7
R Fensterinhalt erscheint erst, wenn das Fenster verändert wird AWT, Swing, JavaFX & SWT 7
A SWT SWT - Unbekannte Fläche (Objekt) erscheint im Composite AWT, Swing, JavaFX & SWT 6
BattleMaster246 JDialog erscheint in der Taskbar AWT, Swing, JavaFX & SWT 7
M JScrollPane und JTree -> JScrollPane erscheint nicht AWT, Swing, JavaFX & SWT 6
W JDialog erscheint nur durchsichtig AWT, Swing, JavaFX & SWT 7
G JDialog erscheint nicht AWT, Swing, JavaFX & SWT 2
J Button erscheint (nicht) AWT, Swing, JavaFX & SWT 8
T Prozesse starten wenn JDialog erscheint AWT, Swing, JavaFX & SWT 2
F Häkchen erscheint nicht bei anklicken von Checkbox in JTable AWT, Swing, JavaFX & SWT 4
G Bild erscheint in Eclipse, aber nicht wenn Programm aus jar AWT, Swing, JavaFX & SWT 11
A Panelinhalt erscheint erst nach Mouseklick auf den Framerand AWT, Swing, JavaFX & SWT 6
L Falsches Fenster erscheint im Vordergrund bei Taskwechsel AWT, Swing, JavaFX & SWT 3
T JMenu erscheint nicht richtig AWT, Swing, JavaFX & SWT 6
richis-fragen Spaltenbreite bei drag nicht änderbar AWT, Swing, JavaFX & SWT 4
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
MiMa Darstellung von FXML ateien nicht korrekt (SceneBuilder) AWT, Swing, JavaFX & SWT 2
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX PixelWriter.setColor setzt Farbe nicht AWT, Swing, JavaFX & SWT 2
M JavaFX Diagonale Linie nicht ausgegeben/angezeigt AWT, Swing, JavaFX & SWT 1
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
P thread nimmt veränderte boolean nicht AWT, Swing, JavaFX & SWT 7
P Animation läuft nicht korrekt AWT, Swing, JavaFX & SWT 8
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
G JOptionPane zeigt nicht an was ich will AWT, Swing, JavaFX & SWT 2
S JavaFX WebView zeigt bestimmte Websites nicht an AWT, Swing, JavaFX & SWT 2
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
berserkerdq2 Anchorpane warum kann ich nicht Anchors setzen AWT, Swing, JavaFX & SWT 6
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Fxml findet controller nicht AWT, Swing, JavaFX & SWT 2
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
_user_q [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
J Programm findet Resource nicht. AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
B Bild lädt nicht AWT, Swing, JavaFX & SWT 2
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
U Code doch nicht austauschbar in 2DGraphics AWT, Swing, JavaFX & SWT 2
P JavaFX Änderungen am Datenmodell visuell nicht sichtbar AWT, Swing, JavaFX & SWT 3
M JavaFX kann man da noch was am code vereinfachen design technisch sieht nicht richtig aus... AWT, Swing, JavaFX & SWT 15
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
G JavaFX Scene ausdrucken nicht möglich, Seite leer AWT, Swing, JavaFX & SWT 5
N Programm Läuft nicht auf anderen Pcs AWT, Swing, JavaFX & SWT 9
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Swing JScrollPane scrollt nicht AWT, Swing, JavaFX & SWT 10
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
Davee JavaFX JavaFX Jar ausführbar jedoch nicht alle Stages AWT, Swing, JavaFX & SWT 3
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
G Gui updated beim zweiten Aufruf nicht mehr AWT, Swing, JavaFX & SWT 15
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben