【发布时间】:2009-06-25 13:19:14
【问题描述】:
Java中有没有增加字体大小的内置方法?
【问题讨论】:
-
您能否指定在什么情况下需要增加字体大小?
Java中有没有增加字体大小的内置方法?
【问题讨论】:
Font 类允许您指定字体大小。
所以,要创建字体,您可以这样做:
Font f = new Font("serif", Font.PLAIN, fontSize);
fontSize 参数将确定Font 的大小。
您实际上无法更改现有 Font 对象的大小。实现类似效果的最佳方法是使用deriveFont(size) 方法创建一个几乎相同但大小不同的新Font。
Font biggerFont = existingFont.deriveFont(bigNumber);
【讨论】:
bigNumber是一个浮点数,否则你会触发deriveFont(int style)重载。 IE。 existingFont.deriveFont(100f);.
您可以使用以下方法派生具有不同大小的新字体:
Font original = // some font
Font bigger = original.deriveFont(newSize);
newSize 是一个浮点数,不是一个整数。正如其他人指出的那样,这在 JavaDoc for Font 中有很好的记录
【讨论】:
float,而不是int。请参阅 deriveFont(float) 并从 Avrom 回答。 deriveFont(int) 将 style(编码为 int 值)应用于字体。
假设您要更改特定JLabel 的字体大小,您可以这样做:
label.setFont(label.getFont().deriveFont(newSize));
确保newSize 是float 而不是int。
【讨论】:
我将此问题解释为“如何全面增加 Swing 的字体大小”。我不知道有任何内置方法可以做到这一点,但您可以在创建任何 Swing 组件之前通过在启动时修改 UIManager 类中的值来自己完成。
我通过将一个参数传递到我的应用中用作乘数来做到这一点。如果我传入 150,它将所有现有字体乘以 150%。代码如下
public static void initializeFontSize() {
String fontSizeParam = System.getProperty("myapp.fontSize");
if (fontSizeParam != null) {
float multiplier = Integer.parseInt(fontSizeParam) / 100.0f;
UIDefaults defaults = UIManager.getDefaults();
int i = 0;
for (Enumeration e = defaults.keys(); e.hasMoreElements(); i++) {
Object key = e.nextElement();
Object value = defaults.get(key);
if (value instanceof Font) {
Font font = (Font) value;
int newSize = Math.round(font.getSize() * multiplier);
if (value instanceof FontUIResource) {
defaults.put(key, new FontUIResource(font.getName(), font.getStyle(), newSize));
} else {
defaults.put(key, new Font(font.getName(), font.getStyle(), newSize));
}
}
}
}
}
【讨论】:
您可以在运行应用程序时设置属性swing.plaf.metal.controlFont:
java -Dswing.plaf.metal.controlFont=Dialog-50 YourMainClass
在本例中,您将默认字体设置为“Dialog”,大小为 50。
【讨论】:
这个问题太模糊了,无法给出一个好的答案。但我认为您希望系统地增加应用程序中的字体大小。
Java Swing 应用程序中的字体、样式和大小是通过 LookAndFeel 机制控制的。如果要将更改应用于给定类型的所有 Swing 组件,则需要更改外观中的字体。
查看UIManager 示例。
以下是为某些 UI 组件全局更改字体的方法:
UIManager.put("Label.font", new FontUIResource(new Font("Dialog", Font.PLAIN, 10)));
UIManager.put("Button.font", new FontUIResource(new Font("Dialog", Font.BOLD, 10)));
UIManager.put("TextField.font", new FontUIResource(new Font("Dialog", Font.PLAIN, 10)));
【讨论】: