我有大量的jbuttons,jtextfields,jlabels,jmenus,gui項目,並且一次一個地設置背景顏色和前景色非常費時。如何一次設置所有Java Swing GUI組件背景和前景(字體)顏色?
我希望能夠快速/簡潔地在我的項目中爲所有jmenus,jmenuitems,jtextfields,jbuttons等字體(前景)和背景着色,而不必一次設置一個。
有沒有什麼技術可以更簡潔地做到這一點,而不是一次做一個?
我有大量的jbuttons,jtextfields,jlabels,jmenus,gui項目,並且一次一個地設置背景顏色和前景色非常費時。如何一次設置所有Java Swing GUI組件背景和前景(字體)顏色?
我希望能夠快速/簡潔地在我的項目中爲所有jmenus,jmenuitems,jtextfields,jbuttons等字體(前景)和背景着色,而不必一次設置一個。
有沒有什麼技術可以更簡潔地做到這一點,而不是一次做一個?
1)最eficient的方式是使用Custom Look and Feel,他們中的一部分已經有一個很好的主題
2)設定值到UIDefault,Listing UIDefault Properties
編輯:
最好的UIManager Defaults的by @camickr
您可以將Swing與CSS結合使用或使用Swing Look &感受爲了爲您的組件創建標準外觀。 Java site說:
在我們進入CSS實現之前,讓我們考慮一下替代方案:自定義的外觀和感覺。 Swing外觀和感覺(L & Fs)是一組類,它們以非常低的級別實現組件的實際繪製(思考線和位圖)。它們可以在運行時換出新的,通常用於實現本地平臺的外觀;即用於OSX的JDK具有使Swing應用看起來像本地Aqua應用的一組類,其具有糖果按鈕和藍色色調。自定義L & F是強大的,但不是微不足道或快速構建。您通常必須碰觸20個左右的類並實現一大堆特殊的繪圖代碼。
所以CSS更易於使用。同一篇文章繼續介紹如何使用Swing實現CSS。他們爲創建正確的規則提供了一個很好的演練,然後繼續在CSS中實現它們。但是,這不是簡單的「複製和粘貼」代碼。
如果您只想使用包裝(無需親自編碼),則問題Can I use CSS for Java Swing?的答案建議爲Flying Saucer和Jaxx。
他們都JComponents
這樣你就可以把一切的ArrayList
:
//Adding everything to the ArrayList
ArrayList<JComponent> myComponents = new ArrayList<JComponents>();
JButton b1 = new JButton("Button 1");
myComponents.add(b1);
JMenuItem item = new JMenuItem("Menu Item 1");
myComponents.add(item);
//Coloring the foreground/background
for(JComponent j : myComponents) {
j.setForeground(new Color("BLUE"));
j.setBackground(new Color("RED"));
}
如果您使用的外觀和感覺,榮譽在javax.swing.UIManager
的UI常數,那麼你可以只設置。有值的例如面板背景。如果不是,或者您無法控制足夠的外觀,您可以編寫自己的UI委託來繪製特定組件(例如,用於JButton的javax.swing.plaf.ButtonUI
)。如果這還不夠,你可以寫出自己的外觀和感覺。如果你只是擴展Metal LnF並不難,你可以編寫自己的UI代理並設置屬性,如上所述,但集中。
每個人都是對的,所以每個人的回答都是正確的 – 2012-02-14 19:10:12
+1 – mKorbel 2012-02-14 19:11:51