SWT: Globaler Key Listener

tobib

Grünschnabel
Hallo,
Ich habe folgendes problem:
Wenn ich der shell einen Keylistener zufüge reagiert dieser nicht mehr, sobald der Fokus auf einem der der Kinder der shell ist.

Gibt es eine elegantere Lösung den KeyListener global zu verwenden, als ihn jedem Button etc. einzeln anzuhängen?

thx, tobi
 
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

/**
 * @author Tom
 * 
 */
public class DisplayGlobalKeyListenerExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Display display = new Display();

        display.addFilter(SWT.KeyDown, new Listener() {
            public void handleEvent(Event event) {
                System.out.println(event);
                event.doit = false;
            }
        });

        Shell shell = new Shell(display);

        shell.setText("DisplayGlobalKeyListenerExample");
        shell.open();

        shell.setLayout(new GridLayout(1, false));
        Text text = new Text(shell, SWT.NONE);
        text = new Text(shell, SWT.NONE);
        text = new Text(shell, SWT.NONE);
        shell.pack();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }

}

Gruß Tom
 
Hallo,
ich bin auf diesen Thread gestossen, weil ich ein ähnliches Problem habe. Ich versuche einen JFrame so zu gestalten, dass egal auf welcher Komponentet der Fokus liegt auf den Druck der "Enter" Taste reagiert wird.
Ich habe versucht das Beispiel nachzuvollziehen, aber ich bin noch neu mit Swing am Gange, dass ich mit Shells etc. nichts anfangen kann.

Ist der vorgeschlagene Weg auch auf einen JFrame anwendbar und wie müssten die Methoden dann aussehen ?

Mit Dank im Voraus,
Christian
 
Zurück