Exit Menu Item mit Icon versehen

Alles zu NetBeans als RCP-Platform

Moderator: wegus

hopftom
Beiträge: 3
Registriert: 23.09.2016, 11:42

Exit Menu Item mit Icon versehen

Beitragvon hopftom » 10.02.2017, 07:58

Hallo,

wei kann man dem Exit Menüeintrag mit einem Icon versehen?

Folgender Code bewirkt leider nichts!?

Code: Alles auswählen

            //Gets the File menu actions.
            List<? extends Action> myActions = Utilities.actionsForPath("Actions/File/");
            for (Action aAction : myActions) {
                  if (aAction.getClass().getCanonicalName().contains("Exit")) {
                    SwingUtilities.invokeLater(new Runnable() {
                      @Override
                      public void run() {
                        ImageIcon exitImageIcon = new ImageIcon(
                                ImageUtilities.loadImage("shutdown.png", true));
                        aAction.putValue(Action.SMALL_ICON, exitImageIcon);
                      }
                    });
                  }
            }

Benutzeravatar
nigjo
Beiträge: 571
Registriert: 08.09.2009, 09:43
Wohnort: Aachen
Kontaktdaten:

Re: Exit Menu Item mit Icon versehen

Beitragvon nigjo » 10.02.2017, 12:33

Hi hopftom

Der Blick in die Quellen verrät, dass du zusätzlich "noIconInMenu" auf false setzen musst:

Code: Alles auswählen

aAction.putValue("noIconInMenu", Boolean.FALSE);


Die alternative ist, du registrierst auf dem Pfad der eigentlichen Action eine eigene Action mit eigenem Icon. Die Action muss dann nur noch "LifecycleManager.getDefault().exit();" aufrufen.

Gruß
Jens
Man sollte seine Werkzeuge kennen. Ansonsten haut man sich mit dem Hammer nur auf die Finger.

--
NetBeans Certified Engineer - Java Getriebe

hopftom
Beiträge: 3
Registriert: 23.09.2016, 11:42

Re: Exit Menu Item mit Icon versehen

Beitragvon hopftom » 13.03.2017, 11:47

Hallo Jens,

leider wird kein Icon angezeigt. Auch Dein Vorschlag (aAction.putValue("noIconInMenu", Boolean.FALSE);)
zeigt keine Wirkung. Komisch ist, dass ich den Menu Item Text Anpassen kann. Das Icon ist nicht setzbar!?

Hat jemand irgend eine andere Idee?

Gruß
hopftom

Benutzeravatar
nigjo
Beiträge: 571
Registriert: 08.09.2009, 09:43
Wohnort: Aachen
Kontaktdaten:

Re: Exit Menu Item mit Icon versehen

Beitragvon nigjo » 13.03.2017, 13:10

Hi

Das Problem ist, dass die Action, die du selber programmierst und die Action, die NetBeans tatsächlich verwendet nicht unbedingt das gleiche Objekt sein müssen. Dies liegt in der Art und Weise wie die NetBeans Plattform mit Actions umgeht. Zum Teil sind die Actions in den Menüeinträgen und Toolbars direkt nach dem Start nur simple "Delegates" der eigentlichen Action. Selbige muss zu diesem Zeitpunkt noch nicht mal instantiiert sein. Anders als bei einer "simplen" Swing Anwendung kannst du nicht davon ausgehen, dass alle UI-Elemente so bleiben wie sie sind.

Im konkreten Fall hängt es auch ganz extrem davon an, "wann" du das Icon versuchst zu ändern. Vor dem Start der UI? Da sind womöglich noch nicht alle Module geladen. Nach dem Start der UI? Womöglich ist die Action nur das Delegate oder die eigentliche Action hat "getValue" überschrieben um beim Icon immer null zurück zu liefern.

Ich glaube, dass du dir viel leichter eine eigene Action mit eigenem Icon und Text schreiben kannst und die eigentliche Exit-Action einfach per Layer ausblenden solltest. Ein Aufruf von

Code: Alles auswählen

LifecycleManager.getDefault().exit();
in der Action sollte eigentlich reichen.

Gruß
Jens
Man sollte seine Werkzeuge kennen. Ansonsten haut man sich mit dem Hammer nur auf die Finger.

--
NetBeans Certified Engineer - Java Getriebe


Zurück zu „NetBeans - Platform / RCP“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast