2012-10-17 51 views
2

您好,我有一個奇怪的問題。爲我的所有Jlabels JTextArea等設置通用字體大小

我想知道是否以及如何去爲我的Jlabels,TextAreas和基本上可以在面板上進行的任何文本進行通用設置。我一直在每個標籤上寫字體大小以保持一致。然而,面板正在增長,我不想在每個標籤上拼寫字體大小。

以下是我正在使用的尺寸,並希望在我的所有標籤和textarea上使用。

titlelb.getFont().deriveFont(Font.BOLD, (float) 20.); 
lb1.getFont().deriveFont(Font.PLAIN, (float) 11.); 
lb2.getFont().deriveFont(Font.BOLD, (float) 11.); 
textArea.setFont(Font.decode("Arial-PLAIN-11")); 

我只是想知道是否有一種方法來設置它普遍,每一個小組將繼承這些具體的尺寸,如果這是在所有可能的,我真的不知道如何去了解它的大小這就是我在這裏問的原因。先謝謝你。

+2

爲什麼?我懷疑你正在做[像這樣](http://stackoverflow.com/a/12532237/230513),並沒有好的結果。即使是同名的字體在不同的平臺上也有不同的指標。 – trashgod

+0

爲什麼它的一致性問題,因爲我被要求做到這一點,否則我可以小心。不,我當然不會做那樣的事情。 –

回答

7

您可以通過致電UIManager.put("nameOfFontProperty", new Font(Font.DIALOG, FONT.PLAIN, sizeInPixel));更改所需的每個組件的UIManager中的字體屬性。您可以找到一個默認屬性爲here的列表。

一個例子讓所有標籤大小爲20px做的字體:

UIManager.put("Label.font", UIManager.getFont("Label.font").deriveFont(20.0)); 
SwingUtilities.updateComponentTreeUI(yourJFrame); 
+0

請改變nameOfFontProperty應該是ComponentName.font,區分大小寫 – mKorbel

+0

我發現的最好的方法就是在你初始化UIManager的外觀和感覺以及在開始UI之前執行這個操作,雖然'SwingUtilties#updateCompoent'應該工作得很好;) – MadProgrammer

+0

因此,我會在每個面板上添加該行以確保將字體大小設置爲20,問題可以說我使用該字體。但有一個標籤我想設置爲11,並且我寫下了字體設置爲11的值。它仍然保留爲20或將它設置爲11,因爲我願意? –

4

爲您希望在面板中使用固定字體的任何JComponent子類編寫自定義包裝類,並在構造函數中添加字體代碼。例如:

public class JLabelCustom extends JLabel { 

    public JLabelCustom(...) { 
     super(); 

     // Font setting code here 
     .getFont().deriveFont(Font.BOLD, (float) 20.); 
     .getFont().deriveFont(Font.PLAIN, (float) 11.); 
     .getFont().deriveFont(Font.BOLD, (float) 11.); 
     this.setFont(Font.decode("Arial-PLAIN-11")); 
    } 
} 

使用自定義JComponent無論你想要的標準化字體。

+0

有趣的是,我所要做的就是創建一個新的類文件,然後編寫上面的代碼作爲參考。然後我可以在每個面板上擴展它? –

+0

它不會只是每個面板,它都是您想要標準化字體的任何JComponent。 –

+0

這是每個Jlabel和文本區域哈哈。但我可以創建一個新的類文件,並將其擴展到我的標籤等。 –

1

您可以創建一個自動設置所有內容的子類。像'

class UniversalJPanel extends JPanel{ 
    public UniversalJPanel(){ 
     super(); 
     this.setFont(...); 
     } 
    } 

然後,你可以使用這個,而不是普通的JPanel。 JLabel,JTextArea等也可使用

+0

我有點這已經擴展了JPanel接口文件。除了接口文件之外,是否可以將一個類擴展到JPANEL?如果是這樣,我該怎麼做?只要創建一個類似於你的新類文件,然後將其添加到擴展句子中? –

+0

該接口是JPanel的一個子類還是隻是一些設置文件?如果它是一個設置文件,那麼您可以完全擴展JPanel,因爲這些設置將應用於父級,因此將被繼承。 – Perry

+0

接口文件只有這個' import javax.swing.JPanel; public interface PanelValidate { public boolean Validate();公共JPanel getPanel(); public void SaveInfo(); }' 看起來像一個設置文件,但不是100%確定。 –