Wie kann ich alle Bilder für ein JFace Menü deaktivieren, aber lassen Sie sie in der Werkzeugleiste aktiviert

StackOverflow https://stackoverflow.com/questions/734841

  •  09-09-2019
  •  | 
  •  

Frage

Wenn ich eine Reihe von Aktionen erstelle in einer JFace-Anwendung verwendet werden, und ich zuweisen Bilder zu diesen Aktionen, zeigen diese Bilder in bis sowohl die Werkzeugleiste (wo ich sie will) und in den Menüs (wo ich will nicht sie).

Anders als die Versorgung von zwei völlig getrennten Sätzen von Aktionen (der Teil des Punktes von Aktionen in erster Linie eliminiert), wie kann ich diese Bilder habe anordnen nur angezeigt, in der Symbolleiste, und habe die Menüs nur Text angezeigt werden?

War es hilfreich?

Lösung 3

ich am Ende im wesentlichen die Aktionen Duplizieren up, so dass Paare, eines mit einem Bild, eine ohne, wodurch der Nutzen von Maßnahmen in erster Linie die Beseitigung (seufz). Auf der anderen Seite, da jede Aktion nicht nur eine einzige Methode in der Steuerung aufrufen, um die Arbeit zu verrichten, ist es nicht zu heimtückisch und Gruppieren der Paare zusammen macht es ziemlich klar, was los ist.

Andere Tipps

Ich lief in dieses Problem auch (außer ich einen anderen Text für die Symbolleiste und Menü. Wollte) ich am Ende mit der gleichen Aktion, aber zwei verschiedene Instanzen davon.

// Use this one in the menu
Action a = new Action();

// Use this one in the toolbar
Action a2 = new Action();
a2.setImageDescriptor(img);

Alternativ können Sie das Bild-Descriptor in der Aktion für die Symbolleiste Version speichern und legen Sie es für das Menü Version auf null.

Ich habe das selbst nicht überprüft, sondern geben diese Methode eine looksee:

public int getStyle() { ... }

Es ist in der Action-Klasse definiert, und es scheint, die Art des Interface-Elements zurückzugeben, die die Aktion graphisch dargestellt. So könnten Sie den getImageDescriptor () -Methode außer Kraft setzen:

public ImageDescriptor getImageDescriptor() {
    if (getStyle() == AS_DROP_DOWN_MENU)
        return null; // No icon in a menu
    return someImageDescriptor; // Actual icon
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top