JMenuBar

andreas2000

Mitglied
Hallo,

wie kann ich in meinem JMenuBar ein JMenu auf der rechten Seite erstellen? Normalerweise werden diese ja von links her aufgefüllt.

Danke.
 
Hallo Andreas,

JMenuBar mymenubar = new JMenuBar();
mymenubar.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

Vg Erdal
 
Hallo Erdal,

danke für die Antwort, funktioniert auch, es gibt nur ein Problem: Es funktioniert nur für die gesamte JMenuBar, ich möchte aber zwei Menus links und ein (Hilfe)Menu rechts anordnen. Wie ist das möglich?

Gruß,
Andreas.
 
RTFM respektive API/SUN Tutorial. :rtfm:
Dort http://java.sun.com/doc/books/tutorial/uiswing/components/menu.html findest Du:
Customizing Menu Layout
Because menus are made up of ordinary Swing components, you can easily customize them. For example, you can add any lightweight component to a JMenu or JMenuBar. And because JMenuBar uses BoxLayout, you can customize a menu bar's layout just by adding invisible components to it. Here is an example of adding a glue component to a menu bar, so that the last menu is at the right edge of the menu bar:
Code:
//...create and add some menus...
menuBar.add(Box.createHorizontalGlue());
//...create the rightmost menu...
menuBar.add(rightMenu);
 
Hallo Andreas,

hab ein Beispiel geschrieben, welches je ein Menu links, zentriert und rechts anordnet.

Die Idee ist: Das verwenden eines Layoutoutmanager.

Die Layoutmanager funktionieren zwar nicht so ganz wie sie sollen, hab aber mit ein paar leeren JLabels getrickst.

Code:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

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

public class JFrameExample2 {

	JFrame f = new JFrame();
	
	JMenuBar mbar = new JMenuBar();
	
	JMenu menu1 = new JMenu("Menu1");
	
	JMenu menu2 = new JMenu("Menu2");
	
	JMenu menu3 = new JMenu("Menu3");
	
	JMenuItem mitem1 = new JMenuItem("1");
	
	JMenuItem mitem2 = new JMenuItem("2");
	
	JMenuItem mitem3 = new JMenuItem("3");
	
	public JFrameExample2() {
		menu1.add(mitem1);
		menu2.add(mitem2);
		menu3.add(mitem3);
		
		mbar.setLayout(new GridBagLayout());
		GridBagConstraints gc = new GridBagConstraints();
		
		gc.fill = GridBagConstraints.HORIZONTAL;
		gc.gridwidth = 1;
		gc.weightx = 0;
		gc.gridx = 0;
		mbar.add(menu1, gc);
		gc.weightx = 1;
		gc.gridx = 1;
		mbar.add(new JLabel(),gc);
		gc.weightx = 0;
		gc.gridx = 2;
		mbar.add(menu2, gc);
		gc.weightx = 1;
		gc.gridx = 3;
		mbar.add(new JLabel(),gc);
		gc.weightx = 0;
		gc.gridx = 4;
		mbar.add(menu3, gc);
		
		f.setJMenuBar(mbar);
		f.setSize(400,400);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
	}

	public static void main(String[] args) {
		JFrameExample2 test = new JFrameExample2();
	}
}

Hallo Snape,

warst ein Tick schneller als ich. Danke dir, im Suntutorial ist es viel einfacher gelöst als mein Beispiel. Meine Weisheit für die nächsten Tage, "Erst nachschauen ob es schon eine fertige Lösung gibt, und dann eventuell selbst sich daran versuchen. Man ist fast nie der erste der sich über ein bestimmtes Problem schon Gedanken gemacht hat."

Vg Erdal
 
Zurück