2011-01-07 131 views
2

我知道您可以通過設置「外觀和感覺」來更改應用程序的整體外觀。是否有辦法在不編寫外觀類的情況下全局更改組件?例如,如果你想讓你的所有按鈕都是黑色的,你會如何做到這一點?我正在畫空白。Java Swing - 將面板全局更改爲粉紅色背景

由於 ST

回答

1

一種解決方案可以是,工廠模式;

您可以創建一個Factory類,該類創建具有預定義設置的按鈕。每當你需要一個按鈕使用這個工廠類,你會得到具有預定義屬性的對象。

Button button = factory.createButton() 

class Factory{ 
Button createButton(){ 
    Button button = new Button(); 
    button.setBackgroundColor(Color.PINK); 
    return button; 
} 
} 
+0

謝謝。我不清楚。如果我有一個現有的應用程序,並且我的客戶說他們想要按鈕的不同顏色方案。這怎麼可能完成? – soulTower 2011-01-07 14:13:12

+0

您可以使用相同的名稱來擴展按鈕類,例如: Button擴展了javax.swing.Button,並在這個新類的構造函數中設置了背景值。但是,您仍然需要更新代碼並將所有javax.swing.Button導入替換爲新類。與現有代碼的工廠方式相比,更輕鬆地進行重構。 – fmucar 2011-01-07 16:04:03

0

如果您有可能會通過這些迴路設置背景色對應的組件的集合。

public void setBgColor(Color color, List<Component> components) { 
    for (Component c : components) { 
     c.setBackgroundColor(color); 
    } 
} 

困難的部分是獲取組件列表。我已經通過註冊某個組件集合並使用上述方法來設置各種屬性。這種情況是集中對象創建的一個很好的參數。

-1

如果不僅顏色需要更改會怎樣?如果這是一切都在您的控制之下的應用程序,那麼利用繼承 - 爲所有必需組件(例如面板,按鈕)創建基類並覆蓋paintComponent方法以滿足您的需求是有意義的。如果通過提供從paintComponent方法調用的相關「畫家」,可以在實例化時自定義基礎組件中的paintComponent方法的行爲,則此方法可能更爲模塊化。

Here是一個潛在的有用的鏈接。