【问题标题】:Problem with substance look and feel物质外观和感觉的问题
【发布时间】:2011-04-24 12:57:17
【问题描述】:

我已经按内容下载了最近的库,并且我还下载了支持 SwingX 组件的插件。当我运行我的应用程序时,我仍然收到以下错误

UIDefaults.getUI() failed: no ComponentUI class for:   org.jdesktop.swingx.JXTaskPaneContainer[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,bord  er=,flags=9,maximumSize=,minimumSize=,preferredSize=]  
java.lang.Error  
        at javax.swing.UIDefaults.getUIError(UIDefaults.java:711)  
        at javax.swing.MultiUIDefaults.getUIError(MultiUIDefaults.java:133)  
        at javax.swing.UIDefaults.getUI(UIDefaults.java:741)  
        at javax.swing.UIManager.getUI(UIManager.java:1017)  
        at org.jdesktop.swingx.plaf.LookAndFeelAddons.getUI(LookAndFeelAddons.java:308)  
        at org.jdesktop.swingx.JXTaskPaneContainer.updateUI(JXTaskPaneContainer.java:141)  
        at javax.swing.JPanel.<init>(JPanel.java:69)  
        at javax.swing.JPanel.<init>(JPanel.java:78)  
        at org.jdesktop.swingx.JXPanel.<init>(JXPanel.java:133)  
        at org.jdesktop.swingx.JXTaskPaneContainer.<init>(JXTaskPaneContainer.java:113)  
        at operator.table_browser.initComponents(table_browser.java:48)  
        at operator.table_browser.<init>(table_browser.java:33)  
        at forms_helper.form_objects.<clinit>(form_objects.java:71)  
        at Main$1.run(Main.java:53)  
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)  
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)  
        at   java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)  
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)  
        at   java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)  
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)  
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)  
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)  
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError  
        at Main$1.run(Main.java:53)  
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)  
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)  
        at   java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)  
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)  
        at   java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)  
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)  
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)  
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)  
Caused by: java.lang.NullPointerException  
        at org.jdesktop.swingx.plaf.LookAndFeelAddons.getUI(LookAndFeelAddons.java:313)  
        at org.jdesktop.swingx.JXTaskPaneContainer.updateUI(JXTaskPaneContainer.java:141)  
        at javax.swing.JPanel.<init>(JPanel.java:69)  
        at javax.swing.JPanel.<init>(JPanel.java:78)  
        at org.jdesktop.swingx.JXPanel.<init>(JXPanel.java:133)  
        at org.jdesktop.swingx.JXTaskPaneContainer.<init>(JXTaskPaneContainer.java:113)  
        at operator.table_browser.initComponents(table_browser.java:48)  
        at operator.table_browser.<init>(table_browser.java:33)  
        at forms_helper.form_objects.<clinit>(form_objects.java:71)  
        ... 9 more

帮我解决这个问题!!

【问题讨论】:

    标签: java swing swingx substance


    【解决方案1】:

    第一个问题,您是否在 EDT 上正确添加了 Substance L&F

    f.e.

    SwingUtilities.invokeLater(new Runnable() {
    
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(new SubstanceOfficeSilver2007LookAndFeel());
                    SwingUtilities.updateComponentTreeUI(frame);
                } catch (UnsupportedLookAndFeelException e) {
                    throw new RuntimeException(e);
                }
            }
        });
    

    【讨论】:

    • 我没有添加这一行 SwingUtilities.updateComponentTreeUI(frame);
    • 但我已经添加了第一行以包含 LAF
    • :-) 这可能只是开始,请确保对于这个 L&F,您需要在 EDT 上正确更新大量 ***
    • 如果您将使用或已经使用一些 XxxRendered 扩展 DefaultXxxRenderer,那么您需要更改扩展 SubstanceXxxRenderer,渲染器内容可能会保留,但没人知道,我也不是这个 L&F 的专家,刚刚尝试过,只是为了消除一些 EDT 问题 .... :-)
    • 你当然需要 invokeLater() 方法。但是,如果您之后创建框架,您真的需要第二行 updateComponentTreeUI() 吗?你是从我能读到的一些资源中得到的吗?谢谢
    【解决方案2】:

    谢谢大家!!

    我通过重置 NetBeans 缓存文件解决了这个问题 :) NetBeans 有时很奇怪...不得不解决一些完全不相关的问题.. :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2012-07-18
      • 1970-01-01
      • 2012-08-27
      相关资源
      最近更新 更多