Menü mit ALT-D öffnen

Status
Nicht offen für weitere Antworten.

keisersoze

Mitglied
Moin,
folgendes Problem:
Ein JMenu namens jMenuFile("Datei") enthält die MenuItems Neu, Öffnen, ...
Wenn ich auf das JMenu klicke, rollt es sich ganz normal auf, so dass diese MenüItems sichtbar werden.
Das möchte ich allerdings auch über die Tastatur steuern können.

Wenn ich

Code:
jMenuFile.setFocus(true);
jMenuFile.setSelected;

aufrufe, ist das Menü zwar selektiert und besitzt den Focus, es rollt sich aber nicht auf, die Items sind also nicht sichtbar.

Benötige nur den richtigen Aufruf, oder vielleicht wird es ja auch nicht direkt über das JMenu, sondern über die JMenuBar gesteuert.

Vielen Dank im Voraus
 
G

Guest

Gast
keisersoze hat gesagt.:
Moin,
folgendes Problem:
Ein JMenu namens jMenuFile("Datei") enthält die MenuItems Neu, Öffnen, ...
Wenn ich auf das JMenu klicke, rollt es sich ganz normal auf, so dass diese MenüItems sichtbar werden.
Das möchte ich allerdings auch über die Tastatur steuern können.

Vielen Dank im Voraus

Also das hier? ->
public void setAccelerator(KeyStroke keyStroke)
setAccelerator is not defined for JMenu. Use setMnemonic instead.
 

keisersoze

Mitglied
Also, danke erstmal für die Hinweise.

Das
Code:
jMenuFile.setPopupMenuVisible(true);
funktioniert auch, allerdings öffnet sich nur die Liste, ich kann aber nicht über die Pfeile auf einen der Items navigieren.

Was ich ausprobiert habe:
Code:
jMenuFile.setSelected(true);
jMenuFile.grabFocus();
Das Menu erhält zwar den Fokus und ist auch selektiert, die Navigation funktioniert aber immernoch nicht.
 

spoensche

Mitglied
Code:
JMenu dateiMenu = new JMenu("Datei");
/** 
 * wichtig bei mnemonic ist das einzelne hochkommata, wenn du das nicht benutz bekommst du eine   
 * fehlermeldung
 */
dateiMenu.setMnemonic('D');
 

T1M

Bekanntes Mitglied
Hi,
ich hab da mal ne frage zu. und zwar hab ich das so geregelt um ne komplette menuleiste zu erstellen:
Code:
//Menuleiste erstellen
	public static JMenu makeMenu(Object parent, Object[] items, Object target)
	{
		JMenu m = null;
		if(parent instanceof JMenu)
			m = (JMenu)parent;
		else if(parent instanceof String)
			m = new JMenu((String)parent);
		else
			return null;
		for(int i=0; i<items.length; i++)
		{
			if(items[i]==null)
				m.addSeparator();			//trennstrich
			else
				m.add(makeMenuItem(items[i], target));	//etwas (z.B. speichern) wird in 		
		}												//menuleiste aufgenommen
		return m;
	}
	
	//Menuleiste füllen
	public static JMenuItem makeMenuItem(Object item, Object target)
	{
		JMenuItem r = null;
		if(item instanceof String)
			r = new JMenuItem((String)item);
		else if(item instanceof JMenuItem)
			r = (JMenuItem)item;
		else
			return null;
		if(target instanceof ActionListener)
			r.addActionListener((ActionListener)target);
		return r;
	}
Code:
 //Menuleiste initialisieren
        JMenuBar menuBar = new JMenuBar();
        menuBar.add(makeMenu("Datei", new Object[]
		{
        		"Beenden"
		},this));
      
        menuBar.add(makeMenu("Ansicht", new Object[]
		{
        		"Dienste anzeigen", null, makeMenu("Feld", new Object[]
				{
        				"rot", "weiß"
				},this),
				makeMenu("Zeile", new Object[]
				{
						"rot ", "weiß "
				}, this)
		}, this));
        
        menuBar.add(makeMenu("Tafel", new Object[]
		{
        		"Zeile einfügen", "Zeile löschen", null, "aktualisieren", "drucken", null,
				"gelöschte Zeile wiederherstellen..."
		}, this));
        
		menuBar.setVisible(true);
		setJMenuBar(menuBar);

Wie kann ich da jetzt die tastenkürzel (wie 'ALT+D') verwenden? setMnemonic kennt JMenuBar net ...
THX,
T1M
 

bummerland

Top Contributor
T1M hat gesagt.:
Wie kann ich da jetzt die tastenkürzel (wie 'ALT+D') verwenden? setMnemonic kennt JMenuBar net ...
THX,
T1M
nicht JMenuBar, sondern JMenu!
du willst ja dem Menü son ding zuordnen, nicht der ganzen Menüleiste.
 

T1M

Bekanntes Mitglied
nja, aber wenn ich aus JMenuBar JMenu mache, dann zeigt er mir die nicht mehr an.
 
R

Roar

Gast
T1M hat gesagt.:
nja, aber wenn ich aus JMenuBar JMenu mache, dann zeigt er mir die nicht mehr an.
du sollst nicht aus deiner JMenuBar ein JMenu machen du sollst auf deine JMenus setMnemonic() aufrufen!
 

Illuvatar

Top Contributor
JMenuBar viech = new JMenuBar();
setJMenuBar (viech);
JMenu menuviech = new JMneu();
menuviech.setMnemonic ('D');
viech.add (menuviech);
menuviech.add (wasAuchImmerFürViecher);
 

T1M

Bekanntes Mitglied
hmm, hab das jetzt mal so gemacht:
Code:
        //Menuleiste initialisieren
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
		JMenu menu = new JMenu();
		
		menuBar.add(makeMenu("Datei", new Object[]
		{
        		"Beenden"
		},this));
		menuBar.add(menu);
		menu.setMnemonic ('D');

        JMenu menu2 = new JMenu();
        menuBar.add(makeMenu("Ansicht", new Object[]
		{
        		"Dienste anzeigen", null, makeMenu("Feld", new Object[]
				{
        				"rot", "weiß"
				},this),
				makeMenu("Zeile", new Object[]
				{
						"rot ", "weiß "
				}, this)
		}, this));
        menuBar.add(menu2);
        menu2.setMnemonic ('A');
        
        JMenu menu3 = new JMenu();
        menuBar.add(makeMenu("Tafel", new Object[]
		{
        		"Zeile einfügen", "Zeile löschen", null, "aktualisieren", "drucken", null,
				"gelöschte Zeile wiederherstellen..."
		}, this));
        menuBar.add(menu3);
        menu3.setMnemonic ('T');
        
		menuBar.setVisible(true);
aber wenn ich ALT+D drücke, dann geht er zwischen 'Datei' und 'Ansicht'. bei ALT+A geht er zw. 'Ansicht' und 'Tafel', bei ALT+T hinter Tafel ... ???:L
 

grisu211

Mitglied
hier addest du zuerst das menu, dass du mit deiner methode makeMenu erstellst.
es hat keinen namen..

Code:
      menuBar.add(makeMenu("Datei", new Object[] 
      { 
              "Beenden" 
      },this));

dann fügst du das Menü "menu" hinzu und setzt das D als Mnemonic.
Code:
menuBar.add(menu); 
menu.setMnemonic ('D');

und dann folgt ein weiteres menü.

wenn du nun Alt-D drückst dann springt er auf das Menü "menu" dieses ist zwar auf der MenuBar, aber leer.

und das sitzt genau zwischen "Datei" und "Ansicht", hat keine überschrift und ist somit quasi unsichtbar...

vielleicht meintest du das so:
Code:
   //Menuleiste initialisieren 
        JMenuBar menuBar = new JMenuBar(); 
        setJMenuBar(menuBar); 
      JMenu menu = new JMenu(); 
       
      menu = makeMenu("Datei", new Object[] 
      { 
              "Beenden" 
      },this); 
      menuBar.add(menu); 
      menu.setMnemonic ('D'); 

        JMenu menu2 = new JMenu(); 
        menu2 = makeMenu("Ansicht", new Object[] 
      { 
              "Dienste anzeigen", null, makeMenu("Feld", new Object[] 
            { 
                    "rot", "weiß" 
            },this), 
            makeMenu("Zeile", new Object[] 
            { 
                  "rot ", "weiß " 
            }, this) 
      }, this); 
        menuBar.add(menu2); 
        menu2.setMnemonic ('A'); 
        
        JMenu menu3 = new JMenu(); 
        menu3 = makeMenu("Tafel", new Object[] 
      { 
              "Zeile einfügen", "Zeile löschen", null, "aktualisieren", "drucken", null, 
            "gelöschte Zeile wiederherstellen..." 
      }, this); 
        menuBar.add(menu3); 
        menu3.setMnemonic ('T'); 
        
      menuBar.setVisible(true);

Das müsste klappen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Popup Menü nur bei besonderem Fall öffnen AWT, Swing, JavaFX & SWT 3
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
J GUI Programmierung Popup-Menü AWT, Swing, JavaFX & SWT 4
J Java GUI Dropdown-Menü anzeigen AWT, Swing, JavaFX & SWT 5
I Von Menü: Seite zu Seite springen (CardLayout) AWT, Swing, JavaFX & SWT 8
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
H Swing Auf Klick auf Menü-Eintrag reagieren AWT, Swing, JavaFX & SWT 0
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
M Menü ohne Menübar umsetzen[SWT] AWT, Swing, JavaFX & SWT 8
RalleYTN Swing Menü für Texteditor (Rechtsklick) AWT, Swing, JavaFX & SWT 4
D javafx.scene.control.TreeView als dropdown Menü AWT, Swing, JavaFX & SWT 6
G JavaFX Menü und mehrere Scenes AWT, Swing, JavaFX & SWT 16
J Swing aufklappbares Menü AWT, Swing, JavaFX & SWT 0
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
F Swing Ein 2D-Game Menü mit framefüllenden Button AWT, Swing, JavaFX & SWT 6
J 2D-Grafik Menü programmieren AWT, Swing, JavaFX & SWT 2
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
M Menü mit Buttons AWT, Swing, JavaFX & SWT 8
J Graphisches Game Menü AWT, Swing, JavaFX & SWT 9
J Maus "locken" für Menü AWT, Swing, JavaFX & SWT 8
S SWT: Drop-Down Menü-Einträge mit Tooltip hervorheben AWT, Swing, JavaFX & SWT 3
H Swing Menü mit Bildern AWT, Swing, JavaFX & SWT 2
C Swing Wie kann ich im Programm das Menü schließen AWT, Swing, JavaFX & SWT 2
D Jtable mit Dropdown Menü erweitern funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing In GUI-Builder-JFrame mit Menü Schreiben und Zeichnen AWT, Swing, JavaFX & SWT 4
J Menü umstrukutierem AWT, Swing, JavaFX & SWT 5
R Bitte kein Menü bei F10 AWT, Swing, JavaFX & SWT 9
A Swing Fenstergröße mittels Menü verändern AWT, Swing, JavaFX & SWT 3
kodela Tastaturereignisse für Menü- und Anwenderbereich AWT, Swing, JavaFX & SWT 14
TheWhiteShadow Swing Problem mit Icon-Menü-Leiste AWT, Swing, JavaFX & SWT 5
E Windows Kontext Menü - Laufendes Programm AWT, Swing, JavaFX & SWT 3
G Menü verschwindet durch .setText() AWT, Swing, JavaFX & SWT 4
J Swing Natives Menü unter OS X erstellen ? AWT, Swing, JavaFX & SWT 8
J Menü beschriftung wird nicht verändert AWT, Swing, JavaFX & SWT 7
J LookAndFeel Titelbar & About Menü AWT, Swing, JavaFX & SWT 6
Eldorado Swing Popup-Menü mit Jspinner AWT, Swing, JavaFX & SWT 4
Semox Swing Shortcuts in Menü realisieren AWT, Swing, JavaFX & SWT 2
R Swing Menü wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
Semox Swing Menü und JPanel AWT, Swing, JavaFX & SWT 6
S Menü Item "abhaken" lassen vom Benutzer AWT, Swing, JavaFX & SWT 2
G Swing Fortschrittsbalken im Fenster: Menü deaktivieren / abfangen? AWT, Swing, JavaFX & SWT 27
L Verzeichnis Menü (Durchsuchen) AWT, Swing, JavaFX & SWT 2
R JRadioButtonGroup - im Menü und im losgelösten Fenster AWT, Swing, JavaFX & SWT 3
J JButton und Menü AWT, Swing, JavaFX & SWT 5
S Dropdown-Menü wie auf der Eclipse-Toolbar AWT, Swing, JavaFX & SWT 7
T einfaches Menü in swing das nicht herunterklappt? AWT, Swing, JavaFX & SWT 4
M Menü mit Layout AWT, Swing, JavaFX & SWT 10
N Fenster mit Menü AWT, Swing, JavaFX & SWT 5
V Menüeinträge im DropDown-Menü deaktivieren AWT, Swing, JavaFX & SWT 3
B Applet Menü AWT, Swing, JavaFX & SWT 6
B Dropdown-Menü im Explorer AWT, Swing, JavaFX & SWT 4
E Anfänger-JPanel aus Menü aufrufen AWT, Swing, JavaFX & SWT 4
T Scrollbalken für ein Menü oder laufendes Dropdown-Menü wie? AWT, Swing, JavaFX & SWT 34
G Funktion für PopUp Menü AWT, Swing, JavaFX & SWT 32
ElViZ JCheckBoxMenuItem Problem - Menü soll offen bleiben. AWT, Swing, JavaFX & SWT 3
S Menü AWT, Swing, JavaFX & SWT 31
L F10 Taste öffnet das Menü AWT, Swing, JavaFX & SWT 7
M Combobox verdeckt Menü AWT, Swing, JavaFX & SWT 2
T Windows-Typisches Menü für Swing AWT, Swing, JavaFX & SWT 3
D Chinesisches Menü AWT, Swing, JavaFX & SWT 6
D Pulldown Menü erstellen; welche Klasse? AWT, Swing, JavaFX & SWT 2
T Tray-Icon-Menü unter Linux AWT, Swing, JavaFX & SWT 10
J Context Menü Maus AWT, Swing, JavaFX & SWT 3
welterde Menü in der Titelleiste des JInternalFrame AWT, Swing, JavaFX & SWT 4
T Popup-Menü unter Linux AWT, Swing, JavaFX & SWT 2
G Swing Menü Hauptfenster AWT, Swing, JavaFX & SWT 14
M Ereignis: Menü offen? AWT, Swing, JavaFX & SWT 2
J Icons mit Text als Menü AWT, Swing, JavaFX & SWT 2
G Problem mit Kontextmenu(Popup Menü) AWT, Swing, JavaFX & SWT 3
G Menü hervorheben, wenn Item ausgewählt ist? AWT, Swing, JavaFX & SWT 2
B Menü-Bedienung mit Keys unter AWT! AWT, Swing, JavaFX & SWT 3
J Drop-down menü in Toolbar Button AWT, Swing, JavaFX & SWT 8
G Rechte Maustaste soll Menü aufrufen AWT, Swing, JavaFX & SWT 11
G Problem mit Menü/Button auf Hintergrundbild AWT, Swing, JavaFX & SWT 10
G Datei per Menü laden und und in JTextArea darstellen AWT, Swing, JavaFX & SWT 4
A Fenster über Menü schließen AWT, Swing, JavaFX & SWT 2
G Menü oder Layout? AWT, Swing, JavaFX & SWT 2
P Menü soll sich nur nach links aufbauen... AWT, Swing, JavaFX & SWT 7
I Swing: Menü verschwindet beim Einfügen eines Bildes AWT, Swing, JavaFX & SWT 15
J JTextField immer über Menü der JComboBox gezeichnet AWT, Swing, JavaFX & SWT 2
G menü AWT, Swing, JavaFX & SWT 9
C ActionListener für dynamisches Menü AWT, Swing, JavaFX & SWT 8
G Wie kann man ein Kontext-Menü erstellen? AWT, Swing, JavaFX & SWT 2
I Screen nur 1x öffnen können AWT, Swing, JavaFX & SWT 17
OZAN86 einfaches Fenster öffnen scheitert AWT, Swing, JavaFX & SWT 18
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Fenster in JavaFX öffnen Schliessen (Initialisierung) AWT, Swing, JavaFX & SWT 20
OSchriever Anwendung aus SystemTray öffnen AWT, Swing, JavaFX & SWT 29
A 2 Stages gleichzeitig öffnen AWT, Swing, JavaFX & SWT 2
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
platofan23 JAVAFX zweites Fenster öffnen AWT, Swing, JavaFX & SWT 2
A Ein browser Fenter prametrisiert öffnen AWT, Swing, JavaFX & SWT 15
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
J JavaFX Kamera im Programm öffnen AWT, Swing, JavaFX & SWT 6
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
D Swing Neues (3.) Fenster öffnen AWT, Swing, JavaFX & SWT 2
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben