[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