[Java lista] Nimbus Look and Feel beállítási lehetőségek

Vig Balázs Balazs.Vig at dataexplorer.hu
2010. Feb. 4., Cs, 16:25:53 CET


Sziasztok!

Csak összefoglalom az elmúlt napok tapasztalatait, hátha hasznos lesz még valakinek.

Készítettem egy teszt alkalmazást, amire feldobáltam egy csomó komponenst. Igyekeztem mindegyiket. Ezután a Nimbus doksi (http://jasperpotts.com/blogfiles/nimbusdefaults/nimbus.html) alapján kipróbáltam, hogy az egyes paraméterek beállításával, mi változik. Ezt feljegyeztem.

Íme a lista:
Primary Colors
        //setLAF("control", backgroundColor);
        //setLAF("info", backgroundColor);
        setLAF("nimbusAlertYellow", foregroundColor);  //optionpane felkialtojel
        setLAF("nimbusBase", foregroundColor);  //tab, desktoppane hatter, tree ikon, scrollbar button, slider potty, checkbox, selected radiobutton potty
        //setLAF("nimbusDisabledText", backgroundColor);
        setLAF("nimbusFocus", foregroundColor); // fokuszalt elem korvonala
        setLAF("nimbusGreen", foregroundColor); // internalframe maximize
        setLAF("nimbusInfoBlue", foregroundColor); // optionpane info
        setLAF("nimbusLightBackground", foregroundColor); //texfield-, spinner-, textpane-, editorpane background
        setLAF("nimbusOrange", foregroundColor); //internalframe minimize, progressbar progress
        setLAF("nimbusRed", foregroundColor); //optionpane error, internelframe close
        //setLAF("nimbusSelectedText", backgroundColor);
        //setLAF("nimbusSelectionBackground", backgroundColor);
        //setLAF("text", backgroundColor);
Secondary Colors
        //setLAF("activeCaption", backgroundColor);
        setLAF("background", foregroundColor); //mindenfajta panel background, button, togglebutton, combobox, textarea-, formattedtexfield-, passwordfield-, internalframe-, optionpane backgound
        //setLAF("controlDkShadow", backgroundColor);
        //setLAF("controlHighlight", backgroundColor);
        //setLAF("controlLHighlight", backgroundColor);
        //setLAF("controlShadow", backgroundColor);
        //setLAF("controlText", backgroundColor);
        //setLAF("desktop", backgroundColor);
        //setLAF("inactiveCaption", backgroundColor);
        //setLAF("infoText", backgroundColor);
        //setLAF("menu", backgroundColor);
        //setLAF("menuText", backgroundColor);
        setLAF("nimbusBlueGrey", foregroundColor); //menubar-, nem selected radiobutton potty-, scrollbar es gombok-, slider sav-, progressbar hatter, button (kiveve optionpane OK),- togglebutton-, checkbox-, textfield-, formatetedtextfield-, passwordfield-, spinner-, separator-, popupmenu-,  korvonal, tree header, splitpane elvalaszto, tree level elemek, internalframe border es fejlec
        setLAF("nimbusBorder", foregroundColor); //scrollpane-, menubar border
        //setLAF("nimbusSelection", backgroundColor);
        //setLAF("scrollbar", backgroundColor);
        setLAF("textBackground", foregroundColor); //textfield-, textarea-, formattedtextfield-, passwordfield-, spinner-, textpane-, editorpane kijelolt szoveg hattere
        setLAF("textForeground", foregroundColor); //tab-, button-, optionpane uzenet-, table header-, tree elemek-, label-, togglebutton-, checkbox-, radiobutton-, progressbar-, combobox-, list-, textfiled-, textarea-, formattedtextfield-, passwordfield-, spinner-, textpane-, editorpane szoveg
        //setLAF("textHighlight", backgroundColor);
        //setLAF("textHighlightText", backgroundColor);
        setLAF("textInactiveText", backgroundColor);
        //hianyzik: tree- table- list- combo selected item background --> doksi

A teszteléshez két színt használtam: backgroundColor, foregroundColor. A setLAF eljárás csak rövidítése az UIManager.put-nak. Minden beállításnál feltüntettem, hogy milyen változást észleltem a hatására. Ahol nincs semmi, ott nem tapasztaltam semmit.

Működnek még:
        setLAF("TextArea.background", foregroundColor);
        setLAF("FormattedTextField.background", foregroundColor);
        setLAF("PasswordField.background", backgroundColor);
        setLAF("OptionPane.background", foregroundColor); //optionpane hattere. a gombok paneljanak es a szoveg hatterenek nem!

A problémámat nem sikerült megoldani, mivel az optionpanen lévő text és button panelek opaque paramétere true, így foltként jelentkeznek az optionpane felületén (amennyiben az optionpane.background és a background más értéket vesz fel)
Sajnos nem sikerült megoldani, hogy az optionpanen lévő panelek szinét beállítsam, az opaque érték állításáról ne is beszéljünk. A problémára megoldása lehet, ha készítünk egy leszármozottat, amiben beállítjuk a komponensek opaque értékét false-ra.
Még próbálkozok a megoldással...

VigB


További információk a(z) Javalist levelezőlistáról