一个java GUI 程序,上面有若干个组件例如 JButton ,JLabel之类的,期默认的字体表现太差,现在想改变其显示的字体,如果一个一个对所有组件调用setFont()的话,那太麻烦了,有没有什么方法能够一次更改所有组件的字体啊!!!!
解决方案 »
- 给大家伙搞点题来做做
- jvm的3点不明?
- 如何把IE浏览器快速变成灰色来哀悼在汶川地震中遇难的同胞们!
- java 如何向C++服务发送struct结构???????
- 强制类型转换操作的是堆栈还是堆
- 请问大家JFrame 和 Jpanel 的区别是什么?
- 请了解JAVA编程思想的朋友进来帮一下忙!
- BES VisiBroker Edition 6.5 安装完成后,VisiBroker Console 打开时报 Error type: java.lang.NoClassDefFoundError
- 最近比较烦!
- 线程的问题
- java中取double类型变量中整数部分长度用什么方法?
- 用elipse,运行时,出现这样的错误:类文件冲突,磁盘上存在具有另一大小写的资源:****.class,请前辈们指点!
如果使用setFont具体修改将重载通用的设置。
UIManager.put("Button.font", font);
UIManager.put("TextArea.font", font);
import javax.swing.*;
import java.awt.*;public class Test2 extends JFrame { private JButton button = null;
private JLabel label = null; public Test2() {
super("test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Font font = new Font("新宋体", Font.PLAIN, 14);
UIManager.put("JButton.font", font);
UIManager.put("JLabel.font", font); button = new JButton("确定");
//button.setFont(font);
label = new JLabel("中文字体在swing上的表现测试");
//label.setFont(font);
System.out.println(button.getFont());
System.out.println(label.getFont()); getContentPane().add(button, BorderLayout.SOUTH);
getContentPane().add(label, BorderLayout.CENTER); pack();
setVisible(true);
} public static void main(String args[]) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//UIManager.put("JButton.font", font);
//UIManager.put("JLabel.font", font);
} catch (Exception e) {
}
Test2 test = new Test2();
}
}button,label上的字体仍然是jdk默认的字体,并没有改为我想要的字体.
还有就是如果一些组件在一个JPanel中如何更改这些组件的字体,用UIManager.put()也不行
没有JButton.font这个属性,也没有JLabel.font这个属性。
你设置Button.font就可以改变JButton了。
可以运行下下面的代码,看看有那些属性可以设置。
UIDefaults uiDefaults = UIManager.getDefaults();
Enumeration enum = uiDefaults.keys();
while (enum.hasMoreElements()) {
Object key = enum.nextElement();
Object val = uiDefaults.get(key); //如果是字体对象,则打印
if (val instanceof Font){
System.out.println("[" + key.toString() + "]");
}
}