JMenuBar in JFrame

Madlip

Bekanntes Mitglied
Hallo Community,

ich hab da ein Problem und zwars ich bau in einer Klasse meine JMenuBar zusammen und will dann in einer anderen Klassen eben dieses Objekt mitgeben, sprich in den JFrame.setJMenuBar() einsetzten. doch es geht einfach nicht :(

Anbei lege ich den code mal mit dazu:

Meine Klasse MenueBar(in dieser Klasse baue ich den MenueBar zusammen):

Java:
public class MenueBar implements ActionListener{
	
	//Menüleiste
	JMenuBar menueLeiste;
	
	//Menüleiste Elemente
	JMenu datei = new JMenu("Datei");
	JMenu titel = new JMenu("Titel");
	JMenu collection = new JMenu("Collection");
	JMenu server = new JMenu("Server");
	JMenu tools = new JMenu("Tools");
	JMenu hilfe = new JMenu("Hilfe");
	
	
	//Datei
	JMenuItem oeffnen = new JMenuItem("Datei öffnen");
	JMenuItem neu = new JMenuItem("Neue Datei");
	JMenuItem save = new JMenuItem("Datei speichern");
	JMenuItem saveas = new JMenuItem("Datei speichern");
	JMenuItem close = new JMenuItem("Datei speichern unter");
	
	//titel
	JMenuItem openTitel = new JMenuItem("Titel öffnen");
	JMenuItem neuTitel = new JMenuItem("Neuer Titel");
	JMenuItem delete = new JMenuItem("Löschen");
	
	public MenueBar(){
		
		
			
		
		menueLeiste = new JMenuBar();
		
		//Menüelemente erzeugen 
		
		//Menüelemente hinzufügen
		menueLeiste.add(datei);
		menueLeiste.add(titel);
		menueLeiste.add(collection);
		menueLeiste.add(server);
		menueLeiste.add(tools);
		menueLeiste.add(hilfe);
		
		datei.add(oeffnen);
		datei.add(neu);
		datei.add(save);
		datei.add(saveas);
		datei.add(close);
		
		titel.add(openTitel);
		titel.add(neuTitel);
		titel.add(delete);
	
	}
	
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
	}

}

und dann hab ich meine "MainPage" Klasse:

Java:
public class ControllPageBorderLayout{
	
	public void run(){
		JFrame frame = new JFrame("Hauptmenü");
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		frame.setLayout(new BorderLayout());
		
		JLabel label = new JLabel();
		label.setPreferredSize(new Dimension(250, 50));
		
		JLabel label2 = new JLabel();
		label2.setPreferredSize(new Dimension(550, 50));
		
		Component menueLeiste = new JMenuBar();
		JMenuBar menueLeiste2;
		
		menueLeiste2 = new MenueBar(); //aktueel ist der Fehler hier, wenn ich es änder haben ich den Fehler bei der deklaration und in der setMenuBar
		
		frame.setJMenuBar(menueLeiste2);
		
		frame.add(label2, BorderLayout.SOUTH);
		frame.pack();
		//Window size
		frame.setSize(1200, 700);
		
		frame.setLocationRelativeTo(null);
		//Window setting
		frame.setResizable(true);
		frame.setVisible(true);
	}

}

wäre auch sehr dankbar wenn ihr einen Lösungsansatz hättet.

MfG
Madlip
 

jgh

Top Contributor
du erweiterst deine MenuBar-Klasse um mindestens eine getter-Methode:

Java:
public JMenuBar getMenueLeiste() {
		return menueLeiste;
	}

und rufst dann in der "MainPage" Klasse:

Java:
    MenueBar menueBar =new MenueBar();
        
        //menueLeiste2 = new MenueBar(); //aktueel ist der Fehler hier, wenn ich es änder haben ich //den Fehler bei der deklaration und in der setMenuBar
        
        frame.setJMenuBar(menueBar.getMenueLeiste());
 

Madlip

Bekanntes Mitglied
Hey vielen lieben dank, das war es!

Nur noch eine Frage, warum sagst du um "mindestens eine"

Wäre es ratsam da noch mehrere zumachen oder warum diese Formulierung?
 

jgh

Top Contributor
nicht unbedingt...

aber grundsätzlich sollte man die Variablen einer Klasse [c]private[/c] deklarieren und Zugriffe von außen nur mit getter-Methoden zulassen => deswegen "um mindestens eine"
 

André Uhres

Top Contributor
In deinem Fall dürfte es auch ohne getter gehen:
Java:
//        JMenuBar menueLeiste2;
        MenueBar menueLeiste2 = new MenueBar();
        frame.setJMenuBar(menueLeiste2.menueLeiste);
Allerdings wird die Lösung über getter-Methode oft vorgezogen. Dann sollten allerdings die Attribute als "private" deklariert werden:
Java:
    //Menüleiste
    private JMenuBar menueLeiste;

    //Menüleiste Elemente
    private JMenu datei = new JMenu("Datei");
    private JMenu titel = new JMenu("Titel");
...

Für jedes Attribut, auf das du von außen zugreifen willst, musst du dann eine getter-Methode machen.

Gruß,
André
 

Madlip

Bekanntes Mitglied
achso achso das meinst du ;)

hast recht, nur hatte die getter/setter missachtet, weil ich das ganze Zeug ja darin in der Klasse aufbaue ... nur da hab ich eins zu viel missachtet ;) ... vielen Dank nochmal :toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Swing JMenuBar auch unten am JFrame? AWT, Swing, JavaFX & SWT 2
B JFrame / JMenuBar => Anfängerprobleme AWT, Swing, JavaFX & SWT 2
Z JMenuBar wird nicht in JFrame angezeigt AWT, Swing, JavaFX & SWT 2
C JMenuBar im JFrame abgehackt AWT, Swing, JavaFX & SWT 7
J Swing JFrame mit JMenuBar, allerdings ohne Erfolg AWT, Swing, JavaFX & SWT 10
H JFrame, JMenuBar, ScrollBar AWT, Swing, JavaFX & SWT 3
C JMenuBar AWT, Swing, JavaFX & SWT 6
K Event Handling Über JMenuBar die diversen Panels anzeigen AWT, Swing, JavaFX & SWT 10
J Swing JMenuItem blockiert JMenuBar AWT, Swing, JavaFX & SWT 2
S JMenuBar bei sichtbarer JGlassPane AWT, Swing, JavaFX & SWT 1
R JMenuBar.setFont tut nix ? AWT, Swing, JavaFX & SWT 1
A Swing JMenuBar updaten AWT, Swing, JavaFX & SWT 2
kaoZ Swing JMenuBar, Preferences, Properties... und viele andere lustige Dinge (Best Practice) AWT, Swing, JavaFX & SWT 15
Q Designfrage zur JMenuBar AWT, Swing, JavaFX & SWT 6
S JMenuBar wiederverwenden und Eventhandling anpassen AWT, Swing, JavaFX & SWT 4
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
Q Fragen zur JMenuBar & Co. AWT, Swing, JavaFX & SWT 3
M Über eine JMenuBar überprüfen ob ein JCheckBoxMenuItem selectiert ist. AWT, Swing, JavaFX & SWT 4
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
G Swing JMenuBar zu weit links und oben dargestellt AWT, Swing, JavaFX & SWT 5
B Swing Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
D JMenuBar - CardLayout (Klasse anzeigen) AWT, Swing, JavaFX & SWT 3
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
H jMenuBar AWT, Swing, JavaFX & SWT 13
NR_EIGHT Swing Probleme mit JMenuBar AWT, Swing, JavaFX & SWT 6
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
R JMenuBar AWT, Swing, JavaFX & SWT 2
S JMenuBar nach 1. Klick deselectieren AWT, Swing, JavaFX & SWT 6
N JMenuBar verschwindet nicht nach ComponentEvent AWT, Swing, JavaFX & SWT 6
C JMenuBar aktualisieren? AWT, Swing, JavaFX & SWT 2
A Doppelte JMenuBar AWT, Swing, JavaFX & SWT 2
X NullPointerException beim Einfügen einer JMenuBar AWT, Swing, JavaFX & SWT 4
K Look&Feel von JMenuBar und Subkomponenten anpassen AWT, Swing, JavaFX & SWT 6
C JMenuBar linksbündig AWT, Swing, JavaFX & SWT 6
C Größe JMenuBar AWT, Swing, JavaFX & SWT 5
KrokoDiehl Swing Actions direkt auf der JMenuBar AWT, Swing, JavaFX & SWT 6
L Swing Kommunikation zwischen JMenuBar und anderen Componenten AWT, Swing, JavaFX & SWT 2
Developer_X Swing JMenuBar Layout AWT, Swing, JavaFX & SWT 2
kniffel JMenuBar aus anderer Klasse AWT, Swing, JavaFX & SWT 10
G Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
G JMenuBar verschmälern AWT, Swing, JavaFX & SWT 2
M ALT shortcut für JMenuBar deaktivieren AWT, Swing, JavaFX & SWT 3
X JMenuBar überlappt von JPanel :( AWT, Swing, JavaFX & SWT 7
M4nuel Warum überlagert JDesktopPane mein JMenuBar? AWT, Swing, JavaFX & SWT 5
G StatusBar Optik wie JMenuBar; GUI-Erzeugung delegieren AWT, Swing, JavaFX & SWT 2
J JMenuBar in Frame einbauen AWT, Swing, JavaFX & SWT 6
D Canvas über JMenuBar AWT, Swing, JavaFX & SWT 7
P JMenuBar und JToolBar Anzeige Probleme AWT, Swing, JavaFX & SWT 5
C JLabel in JMenuBar frei platzieren AWT, Swing, JavaFX & SWT 2
B JMenubar AWT, Swing, JavaFX & SWT 5
Chris_1980 Makierungsfarbe bei JMenuBar ändern AWT, Swing, JavaFX & SWT 5
L Problem mit JMenuBar AWT, Swing, JavaFX & SWT 5
F JTextField rechts in der JMenuBar AWT, Swing, JavaFX & SWT 4
A gezeichnete Linie verschwindet, wenn ich JMenuBar öffne AWT, Swing, JavaFX & SWT 2
I JMenuBar - Menüs sortieren AWT, Swing, JavaFX & SWT 2
S JMenuBar mit Action belegen! AWT, Swing, JavaFX & SWT 5
M JMenuBar AWT, Swing, JavaFX & SWT 7
B JMenuBar sowie Buttons nach repaint auf JPanel AWT, Swing, JavaFX & SWT 2
T JMenuBar ausblenden lassen aber Hotkeys sollen erhalten sein AWT, Swing, JavaFX & SWT 2
S JMenuBar + update AWT, Swing, JavaFX & SWT 3
M JMenuBar - JMenu mit Tastenkombination aufrufen / anzeigen AWT, Swing, JavaFX & SWT 8
T JMenuBar zweizeilig AWT, Swing, JavaFX & SWT 2
A JMenuBar + paint (Image) AWT, Swing, JavaFX & SWT 6
M JmenuBar wird net angezeigt :( AWT, Swing, JavaFX & SWT 6
U komplette JMenuBar deaktivieren? AWT, Swing, JavaFX & SWT 4
S Mausklick reagiert nicht im JMenuBar AWT, Swing, JavaFX & SWT 4
A JMenuBar verschieben. AWT, Swing, JavaFX & SWT 4
T JMenuBar wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
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

Ähnliche Java Themen


Oben