当我设置一个新的Synthetica主题时,为什么我的JFrame没有重新绘制? [英] Why doesn't my JFrame repaint when I set a new Synthetica theme?

查看:141
本文介绍了当我设置一个新的Synthetica主题时,为什么我的JFrame没有重新绘制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是将我的应用程序主题设置为Synthetica Alu Oxide,但是有些原因JFrame没有重新绘制,但另一个Synthetica主题将重新绘制JFrame。

I just set my applications theme to Synthetica Alu Oxide but some reason the JFrame doesn't repaint but another Synthetica theme will repaint the JFrame.

这就是我的看起来像。

http://i.imgur .com / SOBDTs4.png

这就是它的假设。

< a href =http://www.jyloo.com/images/screenshots/syntheticaAluOxide/democenter2.png =nofollow> http://www.jyloo.com/images/screenshots/syntheticaAluOxide/democenter2.png

    public MainPanel() {
    JFrame frame = new JFrame();
    frame.setTitle("Asteria 3.0 NPC Definition Editor");

    try {
        UIManager.setLookAndFeel(new SyntheticaAluOxideLookAndFeel());
    } catch (UnsupportedLookAndFeelException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    components();       
    frame.setJMenuBar(menuBar);
    JTabbedPane tab = new JTabbedPane();
    tab.addTab("Information", informationTab());

    tab.addTab("Bonuses", bonusTab());
    tab.addTab("Animation", animTab());
    tab.addTab("Property", propertiesTab());
    tab.addTab("Miscellaneous", miscTab()); 

    frame.getContentPane().add(tab);
    //frame.add(this);
    frame.setSize(500, 600);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);     
}


推荐答案

应构建Swing GUI对象并在事件派发线程上操作 a>,之后你调用了 UIManager.setLookAndFeel()

Swing GUI objects should be constructed and manipulated only on the event dispatch thread, after you've invoked UIManager.setLookAndFeel().

try {
    UIManager.setLookAndFeel(new SyntheticaAluOxideLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
    e.printStackTrace();
} catch (ParseException e) {
    e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
    public void run() {
        JFrame frame = new JFrame();
        …
        frame.pack(true);
        frame.setVisible(true);
    }
});

这篇关于当我设置一个新的Synthetica主题时,为什么我的JFrame没有重新绘制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆