JTable TableHeader KeyListener

bladepit

Bekanntes Mitglied
Hallo,

ich würde gerne detektieren wenn der Benutzer auf den Header klickt und eine bestimmte Taste gedrückt hält.

Leider wird das Event torotz setzen des KeyListeners auf das TableHeader nicht gerufen. Hat einer Erfahrungen damit? Übrigens für das JTable alleine (also die Zellen) funktioniert das prima.

Gruß

bladepit
 
Danke für den Tipp schonmal ich habe nun folgendes probiert:
Java:
	this.getTableHeader().getInputMap().put(KeyStroke.getKeyStroke("Alt"), "pressed");
	this.getTableHeader().getActionMap().put("pressed",pressedAction);


        Action pressedAction = new AbstractAction() {
	    public void actionPerformed(ActionEvent e) {
	    	System.out.println("pressed");
	    }
	};

Die Ausgabe kommt jedoch nie...
 
dazu müsste der JTableHeader den Fokus haben. Es gibt InputMaps für unterschiedliche Bedingungen: JComponent#getInputMap(int) bzw. How to Use Key Bindings (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features)
Wobei die ALT Taste ja ein Modifier ist und diese glaube ich gar nicht als KeyStroke gewertet wird.

Wenn es in Deinem Fall nur darum geht zu prüfen, ob bei einem Mausklick die ALT Taste gedrückt war reicht einfach nur ein MouseListener. Wie gesagt, kann man am MouseEvent abfragen, ob eine dieser Modifier Tasten beim Klicken gehalten wurde.
 
und so einfach war es! :-(

Danke Michael für alle die sowas suchen das ist die Lösung...poste die auch wenn die so einfach ist:

Java:
	public void mousePressed(MouseEvent arg0) {
		if(arg0.getButton() == MouseEvent.BUTTON1){
			if(arg0.isAltDown()) //PRESSED;
			else //NOT PRESSED;
		}
	}
 

Zurück
Oben