java swing 通过UIManager怎么能动态改变字体?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java swing 通过UIManager怎么能动态改变字体?相关的知识,希望对你有一定的参考价值。
我想通过点击按钮改变表格中文字的字体和字号,为什么不好用呢?
说SetFont的就算了,我只想知道怎么通过UIManager改变字体,改变LookAndFeel的时候能够改变界面的风格,但是却改不了字体,为什么啊??
static Frame f = new Frame("test");
public static void main(String[] args)
UIManager.put("Table.font", new Font("楷体",0,20));
button.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
UIManager.put("Table.font", new Font("宋体",0,12));
SwingUtilities.updateComponentTreeUI(f);
);
//。。。。。。字数不够,请脑补
f.setVisible(true);
SwingUtilities.updateComponentTreeUI 的源码我看了,里面会repaint的。
追答look = UIManager.getInstalledLookAndFeels();
try
UIManager.setLookAndFeel(look[0].getClassName());
initGlobalFontSetting(new Font("华文彩云",0,15));
SwingUtilities.updateComponentTreeUI(this);
catch(Exception ee)
ee.printStackTrace();
// 设置全局字体
public static void initGlobalFontSetting( Font fnt )
FontUIResource fontRes = new FontUIResource(fnt);
for( Enumeration keys = UIManager.getDefaults().keys(); keys
.hasMoreElements(); )
Object key = keys.nextElement();
Object value = UIManager.get(key);
if(value instanceof FontUIResource)
UIManager.put(key, fontRes);
追问
问题已经解决了,通过UIManager更改字体的时候不能直接设置Font,要使用FontUIResource,我也是刚刚查看JDK的文档才知道的,你给的这段代码也是正确的,分给你了,谢谢你。
参考:http://doc.java.sun.com/DocWeb/api/all/javax.swing.LookAndFeel
共同学习。
不好用啊!!!我用的就是SwingUtilities.updateComponentTreeUI(Component c),但是LookAndFeel界面风格能改变,就是字体改变不了!!!我的代码超长了,复制不上来 郁闷。
以上是关于java swing 通过UIManager怎么能动态改变字体?的主要内容,如果未能解决你的问题,请参考以下文章