Frage

Ich entwickle eine SWT / JFace Anwendung mit den Bibliotheken von Eclipse-3.4.1. Ich begegne folgendes Problem auf Windows (Vista 32bit) und Ubuntu 8.10 32bit:

ich eine Menüleiste im createMenuManager Methode des JFace Application. Ich füge MenuManagers für Datei, Bearbeiten und Hilfe.

ich dann eine ExitAction in die Datei MenuManager hinzufügen wie folgt:

filemenu.add(new ExitAction(this));

Die ExitAction wird auf diese Weise definiert:

public class ExitAction extends Action {
  final ApplicationWindow window;

  public ExitAction(ApplicationWindow w) {

    this.window = w;
    setText("E&xit");
    setToolTipText("Exit the application");
    setAccelerator(SWT.MOD1 + 'Q');    
  }
}

Nun, wenn meine Anwendung startet mag ich in der Lage „CTRL + Q“, um die Anwendung zu beenden zu drücken. Dies schließt jedoch nicht. Erst nachdem ich in der Menüleiste auf „Datei“ klicken und dann auf „CTRL + Q“, um die Anwendung zu klicken, wird beendet.

Ich habe versucht, diese mit unterschiedlichem accelerators- gleichem Verhalten.

Es funktioniert aber, wenn ich eine „MenuItem“ anstelle einer „Aktion“ erstellen, um die Menüleiste zu tragen.

Ist das ein SWT Bug oder habe ich etwas verpasst?

Torsten.

War es hilfreich?

Lösung

Update: Es gibt einen doppelten Fehler von mir, die auch eine Abhilfe enthält. Der Bug url ist: https://bugs.eclipse.org/bugs/show_bug cgi? id = 243758

Grundsätzlich ist die Abhilfe ist create() auf der ApplicationWindow zu rufen und dann getMenuBarManager().updateAll(true); die alle Menüpunkte zwingen wird initialisiert zu erhalten.

Natürlich haben Sie die oben genannten Methoden aufrufen, nachdem Sie die Menüpunkte erstellt.

Andere Tipps

AFAIK setAccelerator(.) tut nichts anderes, als den entsprechenden Text zu Ihrem MenuItem hinzufügen. Sie sind verantwortlich für eine KeyUp Veranstaltung anmelden und reagieren darauf.

Sie können Display.addFilter(SWT.KeyUp, myListener) verwenden Ihre Listener unabhängig Ihre Widgets zu registrieren.

Es stellte sich heraus, dass dies einen Fehler in Eclipse 3.4 ist. Ich habe einen Fehlerbericht vorgelegt: https://bugs.eclipse.org/bugs /show_bug.cgi?id=253078

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top