你好我有一个奇怪的问题。
我想知道是否以及如何为我的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"));
我只是想知道有没有办法将它设置为普遍的,每个Panel都会继承这些特定尺寸,如果可能的话,我真的不知道如何去做标签的尺寸这就是为什么我在这里问。提前谢谢。
答案 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);
答案 1 :(得分: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,无论您希望使用标准化字体。
答案 2 :(得分:1)
您可以创建一个自动设置所有内容的子类。像'
这样的东西class UniversalJPanel extends JPanel{
public UniversalJPanel(){
super();
this.setFont(...);
}
}
然后你可以使用它而不是常规的JPanel。 JLabel,JTextArea等同样适用