【问题标题】:Java and Windows Look & feelJava 和 Windows 外观
【发布时间】:2011-07-06 16:27:37
【问题描述】:

我做了一个扫描图像的摇摆应用程序;每个图像由一片叶子代表一棵树

我遇到的问题是它抛出了这个异常

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.sun.java.swing.plaf.windows.XPStyle$Skin.getWidth(XPStyle.java:513)
    at com.sun.java.swing.plaf.windows.XPStyle$Skin.getWidth(XPStyle.java:517)
    at com.sun.java.swing.plaf.windows.WindowsTreeUI$ExpandedIcon.getIconWidth(WindowsTreeUI.java:138)
    at javax.swing.plaf.basic.BasicTreeUI.drawCentered(BasicTreeUI.java:1580)
    at javax.swing.plaf.basic.BasicTreeUI.paintExpandControl(BasicTreeUI.java:1464)
    at javax.swing.plaf.basic.BasicTreeUI.paint(BasicTreeUI.java:1206)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
    at javax.swing.JComponent.paintComponent(JComponent.java:763)
    at javax.swing.JComponent.paint(JComponent.java:1027)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:285)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1128)
    at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:723)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:679)
    at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:659)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

我不知道为什么会出现这种情况 注意:我使用的是 Windows 外观

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

和 java 1.6_22 windows-7下

【问题讨论】:

  • 你能发布你的代码吗?没有代码很难判断发生了什么。
  • 我认为问题不在于库本身。您介意分享您如何扫描目录中的图像吗?我感觉输入有问题。 (目录中的图像列表)
  • 实际上,我完全可以相信这是 Windows PL&F 的问题。触发问题的代码的最小示例会很好。可能它是特定于机器的。
  • UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); // 不好,不好, 不好 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // 好,好, - 你的版本只能在 Windows 上运行,而不是 Mac 和 Unix 用户希望在他们的桌面上看到 Windows PLAF任何情况。至于“邮政编码”的建议 - 我对此表示“反对”。而是发布 SSCCE (pscode.org/sscce.html)。另外,我的 WAG 是代码在 EDT 关闭 EDT 做一些事情,应该在 EDT 上做
  • @Lucass PLAF 可以在 JFrame(或 JApplet)已经可见时更改。只需调用 SwingUtilities.updateComponentTreeUI(Component) 以确保调整组件树。

标签: java swing windows-xp look-and-feel


【解决方案1】:

试试这个:

//Set the look and feel to users OS LaF.
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (UnsupportedLookAndFeelException e) {
        e.printStackTrace();
    }

【讨论】:

  • ""//设置windows的外观。"不,它不会那样做。至少,不是在 Mac 上。或 *nix 操作系统。
  • 天哪,我喜欢它。在 Windows 上,这看起来很棒。
  • 如果对您有帮助,请考虑投票。
  • 为什么不catch (Exception e)
  • WChargin:try catch 块可能是由 IDE 单独生成的(eclipse 的行为是这样的)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
相关资源
最近更新 更多