Tastaturkombinationen in Swing-GUI

alois

Erfahrenes Mitglied
Hallo zusammen,

ich bin auf der Suche nach einer Erklärung, wie man Tastaturkombinationen in einer Swing-Oberfläche implementiert. Ich habe schon heraus gefunden, dass z.B. STRG+O für "Datei Öffnen" nicht mit einem KeyListener zu realisieren ist... aber wie geht es denn dann?

EDIT: Vielleicht zum besseren Verständnis: Man kann ja in einem JMenu Accelerators definieren, ich möchte aber dass diese global in der ganzen Applikation funktionieren.

Wäre dankbar für jeden Tipp, habe mich echt festgefahren.

Gruß,
alois
 
Zuletzt bearbeitet:
Wenn du es im JMenu als Accelerator definierst, funktioniert das in der ganzen Applikation.

MFG

Sascha
 
Hi,

so habe ich es gemacht, aber vielleicht falsch, denn der Accelerator funktioniert nicht:

PHP:
JMenuItem guiMenuItemQuit = new JMenuItem("Beenden");
guiMenuItemQuit.setAccelerator(KeyStroke.getKeyStroke(
	KeyEvent.VK_Q, InputEvent.CTRL_MASK));
 
Schau mal hier.

Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;


public class JMenuAcceleratorExample extends JFrame
{
	

	public JMenuAcceleratorExample() {

		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300, 300);
		
		JMenuBar bar = new JMenuBar();
		
		JMenu menu = new JMenu("File");
		
		JMenuItem item = new JMenuItem("Quit");
		
		item.addActionListener(new ActionListener(){

			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
			
		});
		item.setAccelerator(KeyStroke.getKeyStroke('Q', InputEvent.CTRL_MASK));
		
		menu.add(item);
		bar.add(menu);
		
		setJMenuBar(bar);
		
		add(new JButton("Button for Focus"), BorderLayout.CENTER);
	}
	
	public static void main(String[] args) {
		new JMenuAcceleratorExample().setVisible(true);
	}
}
 
Zurück