我試圖創建一個Swing面板,其元素的字體大小與其他的swing應用程序不同。最初,對幾個組件使用setFont
沒有造成任何問題。現在我有幾個組件(以及它們的所有子組件),所以這個解決方案是不切實際的。更改JPanel及其所有元素的字體大小
我搜索了關於更改擺動組件的默認UI屬性。我發現的主要是使用UIManager,它會改變全局屬性。這對我不起作用,因爲我想保留所有其他面板的當前字體設置。
眼下(因爲我不喜歡夏奈爾首先嚐試的東西了),我有一個這樣的算法:
public static void fixFont(Container c) {
c.setFont(c.getFont().deriveFont(10.0f));
Component[] comp = c.getComponents();
for (int i=0;i<comp.length;++i) {
if (comp[i] instanceof Container) {
fixFont((Container) comp[i]);
} else {
comp[i].setFont(comp[i].getFont().deriveFont(10.0f));
}
}
}
的問題是:
- 它不包括某些擺動元素,如邊框。
- 我有當我添加其他組件來調用這個函數動態
問:有另一種方式來改變一個Swing面板的字體屬性和它的所有部件,元件等(即一切面板)?
感謝您的想法
我只想更改面板及其所有元素的字體。我不想改變其他面板的字體。使用UIManager執行此操作會更改所有Swing組件的字體。 – YuppieNetworking 2010-06-07 12:39:37
啊,好點。沒有意識到你真的需要什麼。不知道如何(或者如果有可能)現在解決它,我明白你的問題。 – aioobe 2010-06-07 12:53:19
一個「備份」解決方案就像現在這樣做,但也通過'getBorder'和'instanceof TitledBorder' /'TitledBorder.setTitleFont'等來檢查和更新邊框。 – aioobe 2010-06-07 12:57:05