Hallo zusammen,
für mein Problem KeyEvents von OOo in eine eigene Java-Anwendung umzuleiten habe ich von einem offensichtlichen Fachmann einen prima Tip bekommen:
Die KeyEvents kommen erstklassig an, das ist schon mal eine super Sache. Wenn ich jedoch nach eintreffen des KeyEvent "Strg+F7" versuche den Focus auf einen anderen Container meines Desktops zu legen, hängt OOo nebst der Java-Anwendung mitsamt der JVM.
Ich vermute(!!) man muß OOo den Verlust des Focus mitteilen bevor dieser programmatisch vollzogen wird. Aber mit dem "vermuten" ist das halt so eine Sache.
Hat jemand eine Idee oder gar Ahnung davon, ob meine "Vermutung" zutrifft und wenn ja, wie das Problem gelöst werden könnte?
Die DevelopersGuide.pdf des OOo-SDK's habe ich bereits durchsucht (so gut es ging), aber - no success - wie der Schwabe zu sagen pflegt.....
Herzliche Grüße an alle
Jürgen
für mein Problem KeyEvents von OOo in eine eigene Java-Anwendung umzuleiten habe ich von einem offensichtlichen Fachmann einen prima Tip bekommen:
Code:
XWindowPeer myWindowPeer = (XWindowPeer)
UnoRuntime.queryInterface (XWindowPeer.class,doc.getFrame().getXFrame().getContainerWindow());
XToolkit myToolkit = myWindowPeer.getToolkit();
XExtendedToolkit myExtToolkit = (XExtendedToolkit)
UnoRuntime.queryInterface (XExtendedToolkit.class, myToolkit);
myExtToolkit.addKeyHandler(new XKeyHandler() {
public boolean keyPressed(KeyEvent k) {
if(k.Modifiers == KeyModifier.MOD1 && k.KeyCode == Key.LEFT) {
System.out.println("Strg+PFEIL-LINKS");
Reha.thisClass.setDivider(1);
}else if(k.Modifiers == KeyModifier.MOD1 && k.KeyCode == Key.RIGHT){
System.out.println("Strg+PFEIL-RECHTS");
Reha.thisClass.setDivider(2);
}else if(k.Modifiers == KeyModifier.MOD1 && k.KeyCode == Key.UP){
System.out.println("Strg+PFEIL-AUF");
Reha.thisClass.setDivider(3);
}else if(k.Modifiers == KeyModifier.MOD1 && k.KeyCode == Key.DOWN){
System.out.println("Strg+PFEIL-AB");
Reha.thisClass.setDivider(4);
}else if(k.Modifiers == KeyModifier.MOD1 && k.KeyCode == Key.F7) {
System.out.println("Strg+F7");
Reha.jPContainerUnten.requestFocus();
}
return false;
}
public boolean keyReleased(KeyEvent arg0) {return false;}
public void disposing(EventObject arg0) {}
});
Die KeyEvents kommen erstklassig an, das ist schon mal eine super Sache. Wenn ich jedoch nach eintreffen des KeyEvent "Strg+F7" versuche den Focus auf einen anderen Container meines Desktops zu legen, hängt OOo nebst der Java-Anwendung mitsamt der JVM.
Ich vermute(!!) man muß OOo den Verlust des Focus mitteilen bevor dieser programmatisch vollzogen wird. Aber mit dem "vermuten" ist das halt so eine Sache.
Hat jemand eine Idee oder gar Ahnung davon, ob meine "Vermutung" zutrifft und wenn ja, wie das Problem gelöst werden könnte?
Die DevelopersGuide.pdf des OOo-SDK's habe ich bereits durchsucht (so gut es ging), aber - no success - wie der Schwabe zu sagen pflegt.....
Herzliche Grüße an alle
Jürgen