MenuBar selectieren

Status
Nicht offen für weitere Antworten.
G

Ghosti

Gast
Hallo,

ich würde gerne beim drücken der Alt-Taste das erste MenuItem in der Menubar selectieren. Also so wie man es aus jedem anderen Programm kennt (Alt drücken und oben in der MenuBar ist der erste Menupunkt gedrückt, aber noch nicht offen)

Code:
Action select = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
//TODO
	            
}
};
	   
menuBar.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ALT, InputEvent.ALT_MASK), "Alt");
menuBar.getActionMap().put("Alt", select);

Beim Drücken der Alt-Taste wird die Action ausgelöst, was muss ich jetzt dort machen damit der erste Menüpunkt angewählt wird?
 
G

Ghosti

Gast
Hätte noch eine Frage.

Wie kann ich das ganze mit einem

JFrame.addKeyListener() realisieren?

Bei mir reagiert da nichts wenn ich meinem Frame einen KeyListener adde.
 
G

Gast2

Gast
versuch mal.

Code:
if(menubar.getMenu(0).isSelected())
{
menubar.getMenu(0).setSelected(false);
}
else
{
menubar.getMenu(0).setSelected(true);
}
 
G

Ghosti

Gast
@SirWayne

Es wird zwar der Erste Menupunkt markiert aber ich kann ihn nicht mit den Steuertasten runterklappen.

Außerdem hab ich auch ein weiteres Problem.
Wenn ich z.B in der Toolbar auf einen Button klicke dann erhält der Button den Focus (oder eben wenn ein anderes Element der Form den Focus hat). Wenn ich nun danach die Alt-Taste drücke dann funktioniert es nicht mehr.

Wie lässt sich das berichtigen?


Zusatzfrage:
Die MenuItems haben die Funktion: MenuItem.setDisplayedMnemonicIndex(int);

Die Mnemonics habe ich direkt mit setMnemonic bei den MenuItems gesetzt. Somit sind sie immer beim Öffnen der Form sofort zu sehen.
Was müsste ich machen damit ich sie am Anfang nicht sehe sonder nur wenn ich die Alt Taste drücke der Focus die MenuBar hat und erst jetzt die Mnemonics angezeigt werden?

thx
 
G

Gast2

Gast
Die Memorics eben erst in deinem actionPerformed setzen, wenn du alt drückst...
Warum sollte es auch mit der Steuertaste runterklappbar sein du macht nur was mit deiner Alt Taste nicht mit deiner Steuer Taste... Übrigens klappt kein Menü mit der Steuertaste runter sondern mit der Entertaste.

EDIT zum Focus
versuch mal menubar.getInputMap(menurbar.WHEN_IN_FOCUSED_WINDOW).....
 
G

Ghosti

Gast
@SirWayne

Wenn ich die Mnemonics erst beim drücken der Alt Taste setze dann muss ich sie beim Release wieder entfernen. Gibt es da nichts eleganteres.

Zum Thema Steuer Taste:

Sorry ich meine nicht Steuer sonder meine Pfeiltasten. Wenn ich den Menupünkt selectiere dann bringt mir das drücken der Pfeiltaste nichts (es funzt net)

Zum Focus:
menubar.getInputMap(menurbar.WHEN_IN_FOCUSED_WINDOW)..

geht nicht, da ich getInputMap nichts übergeben kann.
 
G

Gast2

Gast
klar kannst was übegerben...
Code:
JMenubar bar =new JMenubar();
InputMap = bar.getInputMap(int condition);

mit der alt taste weiß ich nichts anderes ...
kannst vielleicht noch ein FocusListener drauf legen wenn er den focus bekommt setzen
und wenn er ihn verliert wieder weg machen...

ja Pfeiltaste musst natürlich ihm sagen dass er es öffnen soll oder woher weiß des dein programm??? ???:L
 
G

Ghosti

Gast
@SirWayne

sorry ich hab mich verschaut, du hattest recht es funktioniert so.

Ich hab das ganze jetzt aber mal mit dem KeyListener gemacht

Code:
//Frame auf setFocusable(true)

addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e){
        if(e.getKeyCode() == KeyEvent.VK_ALT)
	{
		f(menuBar.getMenu(0).isSelected())
		{
		        menuBar.getMenu(0).setSelected(false);

		}
		else
		{
		        menuBar.getMenu(0).setSelected(true);
		        menuBar.getMenu(0).setDisplayedMnemonicIndex(0);
		        menuBar.getMenu(1).setDisplayedMnemonicIndex(0);
		        menuBar.getMenu(2).setDisplayedMnemonicIndex(0);
		        menuBar.getMenu(3).setDisplayedMnemonicIndex(0);
		            	
		 }
	 }
     }
});

Nun hab ich noch 3 Fragen:

1. Wenn KeyEvent. VK_ALT ist und dich die Taste schnell drücke dann geht der setSelected(true) bzw. (false) absolut langsam. D.h. ich muss die Alt-Taste 2 mal drücken damit der Select rückgegängig gemacht wird.
Wenn ich einen anderen KeyEvent benützte z.b. VK_V. Dann geht das einwand frei.
Kann mir einer erklären warum das so ist?

2. Was muss ich jetzt tun nachdem der jetzt mein erster Menüpunkt selctiert ist das beim drücken von den Pfeiltasten sich der sich der "Select" auf den nächsten Punkt bzw. das JMenu sich aufklappt.
Wo bzw. Wie muss ich denn darauffolgenden Key abfragen?

3. Im mom setzte ich die Menu Mnemonics mit der setDisplayedMnemonicIndex-Methode. Statt direkt beim JMenu mit setMnemonic('X');
Gibt es eine Methode die die setDisplayedMnemonicIndex(0) wieder aufhebt?
Bzw. wie sollte ich das am Besten mit den Mnemonics hendeln?

thx
 
G

Ghosti

Gast
Edit:
Das Problem mit Frage Nr.1 hat sich mit

public void keyReleased(KeyEvent e)

erledigt.
 
G

Gast2

Gast
weiß zwar jetzt nicht warum du des mit einem KeyListener machst, weil irgenwann mal wird dein Frame nicht mehr den Focus haben und dann klappt die ganze Sache nicht mehr...

zu Frage 2 einfach dein Pfeil abfangen und den 1 Menüeintrag selektieren... genau wie bei dem alt nur halt den untereintrag selektieren...

zu Frage 3 :Kein Plan
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
emma_louisa JavaFX MenuBar Zweitfenster; bei Button "Abbrechen" nur das Zweitfenster schließen AWT, Swing, JavaFX & SWT 2
C SWT MenuBar & MenuItems Fokus wenn F10 unterdrücken/entfernen AWT, Swing, JavaFX & SWT 9
S JavaFX MenuItem in hoher (height größer) MenuBar vertikal zentrieren AWT, Swing, JavaFX & SWT 4
M JavaFX MenuBar und Camera zusammen verwenden AWT, Swing, JavaFX & SWT 2
D Apple MenuBar Eintrag "java" AWT, Swing, JavaFX & SWT 15
B Doppelte MenuBar -> Nach Minimieren verschwunden AWT, Swing, JavaFX & SWT 3
E JavaFX MenuBar und ToolBar zu einem Bereich AWT, Swing, JavaFX & SWT 3
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
O MenuBar wird nicht angezeigt AWT, Swing, JavaFX & SWT 0
C Swing MenuBar als eigene Klasse AWT, Swing, JavaFX & SWT 4
A JavaFX Menubar wird von Canvas überzeichnet AWT, Swing, JavaFX & SWT 8
C Swing Menubar Close, Minimize, Maximize button AWT, Swing, JavaFX & SWT 7
H Timer/Stoppuhr in MenuBar anzeigen AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
F Swing MenuBar wird verdeckt AWT, Swing, JavaFX & SWT 2
S Vereinen von zwei MenuBar AWT, Swing, JavaFX & SWT 3
P jMenu ohne Menubar - Jigloo zeigts AWT, Swing, JavaFX & SWT 2
C menubar border AWT, Swing, JavaFX & SWT 2
R Menubar wird auf Mac OS X nicht angezeigt AWT, Swing, JavaFX & SWT 5
M CoolBar, MenuBar und StatusLine aktualisieren AWT, Swing, JavaFX & SWT 2
T Menubar Problem AWT, Swing, JavaFX & SWT 2
R Menubar immer updaten! AWT, Swing, JavaFX & SWT 9
P MenuBar über Canvas AWT, Swing, JavaFX & SWT 2
T Shortcut für Eintrag aus MenuBar AWT, Swing, JavaFX & SWT 3
M icons im menubar ? AWT, Swing, JavaFX & SWT 5
E Kalender mit der Möglichkeit mehrere Tage zu selectieren AWT, Swing, JavaFX & SWT 3
$ JTree in JTable darstellen und selectieren AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben