Alt + Shift + '<' oder '>'

Hallo newsgroup!

Ich möchte gerne den Fall abfangen, wenn der User ALT + SHIFT + '<' || '> drückt.

Ich probiere schon die ganze Zeit herum, aber irgendwie will es nicht klappen!

Mein letzter Versuch war:

Code:
if(keyEvent.isAltDown() && keyEvent.isControlDown()) { 
	 if(ch != '<' && ch != '>'){
		doSomething();
	}
}

Es scheint, als ob isAltDown() und isControlDown() nie gleichzeitig zutreffen, sondern immer nur nacheinander! Ich vermute mal, dass da intern Events für jeden einzelnen Key generiert werden...

Kann mir jemand sagen, wie kann ich trotzdem zu "doSomething()" gelangen kann?

vg,
Peter
 
Hallo Peter,

ALT+SHIFT+> funktioniert problemlos, ALT+CONTROL+| bzw. ALTGR+| funktioniert jedoch nicht, soweit ich das kurz überprüfen konnte:

Schau auch mal hier:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5017942

Bin mir aber nicht sicher, alle Angaben ohne Gewähr.

Java:
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class KeyExample extends JFrame {

	private JTextArea tArea = new JTextArea();

	public KeyExample() {
		super("Key Example");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationByPlatform(true);
		this.setAlwaysOnTop(true);
		this.setSize(320, 480);

		tArea.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				if (e.isAltDown() && e.isShiftDown()
						&& e.getKeyChar() == '>') {
					tArea.append("keyPressed:ALT and SHIFT and "
							+ e.getKeyChar() + "\n");
				}
				if (e.isAltDown() && e.isControlDown() && e.getKeyChar() == '|') {
					tArea.append("keyPressed:ALTGR and " + e.getKeyChar()
							+ "\n");
				}
			}
		});

		this.add(new JScrollPane(tArea));
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new KeyExample();
	}
}


Vg Erdal
 
Hallo Stefan,
teppi hat gesagt.:
Ich glaub mit || meinte er "ODER" :)
ja, da bin ich dir gleicher Meinung, Jedoch würde es wenig Sinn ;) machen nach:
ALTGR + > oder ALTGR + < zu filtern
denn sofern ALTGR gedrückt ist, fügt die Taste(<,>,|) das Zeichen "|" ein.

Genau so, wenn man nach ALT+SHIFT scannt braucht man nur noch ">" zu überprüfen, "<" und "|" sind hier nicht relevant.

Danke für den Hinweis :) .


Vg Erdal
 
Zurück