【发布时间】:2010-06-07 11:44:54
【问题描述】:
我正在尝试创建一个 Swing 面板,其元素的字体大小与 Swing 应用程序的其余部分不同。最初,对几个组件使用setFont 并没有造成任何问题。现在我有几个组件(以及它们的所有子组件),所以这个解决方案是不切实际的。
我搜索了有关更改 Swing 组件的默认 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 面板及其所有组件、元素等(即面板中的所有内容)的字体属性?
感谢您的想法
【问题讨论】: