Accelerator zu JMenuItem des JPopupMenu einer JList

Mujahiddin

Top Contributor
Java:
JList<String> list = new JList<>();
final JMenuItem someItem = new JMenuItem( "Tu was." );
final JPopupMenu menu = new JPopupMenu();
someItem.addActionListener(new ActionListener() {
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println( "Hallo" );
	}
});
someItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK));
menu.add(someItem);
list.setComponentPopupMenu(menu);
Das ist der gesamte Code.
Wenn mein JPopupMenu angezeigt wird und ich CTRL-S eingebe, funktionierts. Aber ich will, dass es auch funktioniert, wenn nur die JList fokussiert ist (ohne KeyListener).

Hat irgendeiner eine Ahnung, ob das zu machen ist?
 
V

vanny

Gast
Wenn du KeyEvents ohne Focus der Komponente ansprechen willst benötigst du wohl KeyBindings.

Gruß Vanny
 

Mujahiddin

Top Contributor
Ich habe eine Lösung gefunden... Tut genau, was ich machen will, leider geht's nicht ohne Unterklasse von JMenuItem:

Java:
@SuppressWarnings("serial")
private static class MyMenuItem extends JMenuItem {
	/** 
	 * JComponent whose input map will be modified upon setting this object's accelerator.
	 */
	private final JComponent target;
	
	private MyMenuItem(JComponent target) {
		super();
		this.target = target;
	}
	
	@Override
	public void setAccelerator(KeyStroke keyStroke) {
		super.setAccelerator( keyStroke );
		target.getInputMap().put( keyStroke, keyStroke );
		target.getActionMap().put( keyStroke, getAction() );
		getInputMap( WHEN_IN_FOCUSED_WINDOW ).put( keyStroke, "none" );
	}
}

Dies bewerkstelligt, dass mein "target"-Component den Fokus haben muss, dass der Accelerator ausgeführt wird. Ist das PopupMenu geöffnet und man betätigt den KeyStroke, passiert absolut nichts.
Der einzige Nachteil ist, dass man im Konstruktor nicht mehr den Namen angeben kann und diesen in
Code:
myMenuItem.setAction( new AbstractAction( name ) { ... } );
angeben muss.

E: @vanny:
Ja mit KeyBindings funktionierts. Was ich eigentlich wollte (ich hab mich unklar ausgedrückt), war einen Shortcut von einem JComponent zu dieser Action aber gleichzeitig, dass dieser Accelerator im Menu angezeigt wird aber während das Menu den Fokus hat, nichts passiert. Was ich mir vorgestellt hatte, wäre einfach den Accelerator Text zu setzen (was aber anscheinend unmöglich ist... höchstens hiermit)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JMenuItem und Accelerator AWT, Swing, JavaFX & SWT 14
W Accelerator oder KeyListener AWT, Swing, JavaFX & SWT 3
D JMenu -> Accelerator AWT, Swing, JavaFX & SWT 2
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
J Swing JMenuItem blockiert JMenuBar AWT, Swing, JavaFX & SWT 2
F JMenuItem mit KeyStroke kombinieren AWT, Swing, JavaFX & SWT 1
javampir Look&Feel von JMenuItem AWT, Swing, JavaFX & SWT 3
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
K JMenuItem-Shortcut WENN Menüleiste verborgen ist AWT, Swing, JavaFX & SWT 4
J Swing JMenuItem-Event?? AWT, Swing, JavaFX & SWT 3
J Swing JMenuItem auf setEnabled(false) setzen? AWT, Swing, JavaFX & SWT 3
B JMenuItem Anzeigeproblem AWT, Swing, JavaFX & SWT 6
E Swing JTextField als JMenuItem AWT, Swing, JavaFX & SWT 3
G PopupMenu für ein JmenuItem AWT, Swing, JavaFX & SWT 3
N Swing Nimbus arbeitet nicht korrekt korrekt bei setEnabled() für JMenuItem AWT, Swing, JavaFX & SWT 2
F JMenuItem exit AWT, Swing, JavaFX & SWT 2
M Swing JMenuItem und der ActionListener AWT, Swing, JavaFX & SWT 2
S Probleme mit JMenu und JMenuItem AWT, Swing, JavaFX & SWT 2
sylo Position des Icons bei JMenuItem AWT, Swing, JavaFX & SWT 11
Semox Swing JMenuItem-Auswahl mit Aktion ausführen AWT, Swing, JavaFX & SWT 4
pinerski Probleme mit JPopupMenu und JMenuItem AWT, Swing, JavaFX & SWT 7
T Problem mit KeyStroke auf JMenuItem (1.4.2 <-> 6) AWT, Swing, JavaFX & SWT 3
T Von JMenuItem setText auf JButton AWT, Swing, JavaFX & SWT 2
ModellbahnerTT JMenuItem AWT, Swing, JavaFX & SWT 5
O Verstehe ActionListener in Verbindung mit JMenuItem AWT, Swing, JavaFX & SWT 4
Iron Monkey JPopupMenu/JMenuItem Index für getSubElements()[] ermitteln AWT, Swing, JavaFX & SWT 8
0 JMenuItem nicht in zwei JMenus möglich? AWT, Swing, JavaFX & SWT 2
G JMenuItem & AbstractAction = Problem? AWT, Swing, JavaFX & SWT 2
G identische JMenuItem im actionListener unterscheiden AWT, Swing, JavaFX & SWT 4
F ID zu JMenuItem AWT, Swing, JavaFX & SWT 7
A Bei Klick auf disabled JMenuItem JMenu nicht schließen AWT, Swing, JavaFX & SWT 2
Z JMenuItem AWT, Swing, JavaFX & SWT 2
C JMenuItem ActionListener AWT, Swing, JavaFX & SWT 26
DeeDee0815 F-Taste auf JMenuItem legen AWT, Swing, JavaFX & SWT 2
padde479 JMenuItem mit Image AWT, Swing, JavaFX & SWT 2
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
S java.lang.verifyError beim Casten nach JMenuItem AWT, Swing, JavaFX & SWT 13
B ActionListener JMenuItem AWT, Swing, JavaFX & SWT 2
B JMenuItem AWT, Swing, JavaFX & SWT 2
S Öffnen eines JDialog über JMenuItem / Fenster zu viel. AWT, Swing, JavaFX & SWT 2
T JMenu/JMenuItem Component auf der geaddet wurde AWT, Swing, JavaFX & SWT 16
G JMenu About ohne JMenuItem AWT, Swing, JavaFX & SWT 11
G Freiraum bei JMenuItem mit Icon AWT, Swing, JavaFX & SWT 4
B ActionListener/JMenuItem/getSource() . AWT, Swing, JavaFX & SWT 5
F Darstellung von Tastaturkürzel in JMenuItem AWT, Swing, JavaFX & SWT 13
Z JMenu und JMenuItem: MouseOver-Farbe ändern AWT, Swing, JavaFX & SWT 9
J JMenuItem und ActionListener AWT, Swing, JavaFX & SWT 3
B Häkchen bei JMenuItem? AWT, Swing, JavaFX & SWT 6
B Alle jMenu und JMenuItem in einem Array AWT, Swing, JavaFX & SWT 4
L Wie adde ich ein JPopUpMenu AWT, Swing, JavaFX & SWT 3
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
M JPopupMenu per Klick schließen und gleichzeitig ActionEvent auf JButton? AWT, Swing, JavaFX & SWT 15
S Swing JPopupMenu visible AWT, Swing, JavaFX & SWT 4
S JPopupMenu schließen in SystemTray AWT, Swing, JavaFX & SWT 2
xehpuk Swing Listener für JPopupMenu AWT, Swing, JavaFX & SWT 3
hdi Workaround: TrayIcon & JPopupMenu AWT, Swing, JavaFX & SWT 3
K Swing Listener bei JPopupMenu AWT, Swing, JavaFX & SWT 9
S JPopupMenu oder JCombobox die JList oeffnet..? AWT, Swing, JavaFX & SWT 7
A Swing in JPopupMenu die JRadioButtonMenuItems durchlaufen AWT, Swing, JavaFX & SWT 3
T JmenuItems in JPopupMenu kontextabhängig deaktivieren AWT, Swing, JavaFX & SWT 2
S Swing JPopupMenu nicht schließen AWT, Swing, JavaFX & SWT 2
hdi Swing JPopupMenu: Größe AWT, Swing, JavaFX & SWT 4
B JPopupMenu, getParent Problem... AWT, Swing, JavaFX & SWT 2
Dragonfire width of JPopupMenu StyleBug AWT, Swing, JavaFX & SWT 3
M JPopupMenu - Ein vorhandenes Kontextmenü erweitern AWT, Swing, JavaFX & SWT 6
X JPopupMenu Items aktualisieren sich nicht AWT, Swing, JavaFX & SWT 3
T JPopupMenu "schließen" AWT, Swing, JavaFX & SWT 7
M jPopupMenu AWT, Swing, JavaFX & SWT 2
M jPopupMenu - Problem bei der Positionierung AWT, Swing, JavaFX & SWT 3
N JPopupMenu - ausgewähltes Element zurückgeben AWT, Swing, JavaFX & SWT 2
P JPopupMenu scrollen AWT, Swing, JavaFX & SWT 2
A JPopupMenu: Nach oben aufpoppen AWT, Swing, JavaFX & SWT 9
S Problem mit JPopupMenu AWT, Swing, JavaFX & SWT 3
T JPopupMenu wird bei Rechtsklick angezeigt! AWT, Swing, JavaFX & SWT 3
Firefork JPopupMenu unter einem Schalter darstellen AWT, Swing, JavaFX & SWT 2
K Netbeans GUI Builder (Matisse) und erstellen von JPopupMenu AWT, Swing, JavaFX & SWT 1
I In JPopupMenu scrollen AWT, Swing, JavaFX & SWT 4
M JPopupMenu per linker Maustaste öffnen AWT, Swing, JavaFX & SWT 9
V Beliebige Komponenten in einem JPopupMenu? AWT, Swing, JavaFX & SWT 3
F Problem mit JPopupMenu AWT, Swing, JavaFX & SWT 3
C JPopUpMenu in einem JTree ist lahm AWT, Swing, JavaFX & SWT 14
V JPopupMenu Problem und Tipp zu mouse/key AWT, Swing, JavaFX & SWT 3
F JPopupMenu und AbstractAction AWT, Swing, JavaFX & SWT 2
N Problem mit JPopupMenu und alwaysOnTop AWT, Swing, JavaFX & SWT 4
G Schließen von JPopupMenu AWT, Swing, JavaFX & SWT 14
G Problem mit JPopupMenu AWT, Swing, JavaFX & SWT 30
R Hässlicher Punkt bei JPopupMenu AWT, Swing, JavaFX & SWT 12
S JPopupMenu - Kontrolliert beenden AWT, Swing, JavaFX & SWT 3
C Problem mit JPopupMenu AWT, Swing, JavaFX & SWT 6
T java.awt.IllegalComponentStateException bei JPopupMenu AWT, Swing, JavaFX & SWT 6
G Problem mit JPopupMenu und Menüauswahl AWT, Swing, JavaFX & SWT 4
R JPopupMenu,JScrollPane + repaint AWT, Swing, JavaFX & SWT 8
D Probleme bei der Positionierung von JPopupMenu AWT, Swing, JavaFX & SWT 2
J "Problem" mit JPopupMenu AWT, Swing, JavaFX & SWT 7
G JPopupMenu in JTable AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben