Hi.

kaum ist das erste Problem behoben, ist schon das nächste da.

Ich habe einen JFrame/JDialog. Ich will nun beim drücken von z.B. STRG+F9, dass ich dann mit getComponentAt(int x, int y) die Component abfragen kann. Im prinzip recht simpel.

Erstes Problem ist nur, dass der KeyListener nicht wirklich so funktioniert, wie ich es mir gedacht habe. Wenn ich über dem LayeredPane vom JFrame bin, dann registriert er den Tastendruck ja wohl, sobald ich aber über der Table bin, macht er das nichtmehr.
Ich will aber nicht jede Component mit einem Listener belegen, dann bring mit das getComponentAt(x,y) ja auch nix mehr.
Was ich möchte ist eigentlich, dass ich, egal wo im JFrame (also von der MausPosition her gesehen), solange der Frame aktiv ist, die TastenKombi drücken kann und dann möchte ich halt abfragen, ob Control-down ist, ob F9 gedrückt wurde und dann die X/Y-Position von der Maus. Damit möchte ich dann getComponentAt(x,y) aufrufen und diese in dem Component-Tree (Thread weiter unten) dann selektieren. Das Selektieren etc ist kein Problem. Nur die TastenKombi zu prüfen und gleichzeitig die MausPosition zu bekommen, das ist mein Problem.

Ansatzweise habe ich folgendes:

Code:
final ActionListener listener = new ActionListener() {
  public final void actionPerformed(final ActionEvent event) {
    System.out.println("Key typed.. " + "   " + getX() + "x" + getY());
  }
};

final KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F9, 0, true);

getRootPane().registerKeyboardAction(listener, keyStroke, JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
Wenn ich nun F9 drücke, dann wird das, was in der ActionPerformed-Methode steht, ausgeführt. getX() und getY() sind allerdings nicht die Maus-Werte, denn diese sind immer gleich. Ausserdem ist es ja im moment nur F9, ohne Control.

Kann mir da jemand helfen?

TIA && Mfg, Matflasch