使用DefaultDesktopManager对JInternalFrame进行图标化时出现异常

时间:2015-02-27 21:16:52

标签: java jinternalframe jdesktoppane

我正在尝试使用DefaultDesktopManager(或其子类)来控制桌面面板中JInternalFrames的移动。我可以防止框架移出其桌面窗格,但是,当我最小化内部框架时:

 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.RepaintManager.getVolatileOffscreenBuffer(RepaintManager.java:965)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1398)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
    ...

这段代码如下:

JDesktopPan pane = new JDesktopPane();
pane.setDesktopManager(new DefaultDesktopManager());

如果我不使用DefaultDesktopManager(也就是说,我评论上面的第二行),我可以毫无例外地最小化内部框架。

注意:这个问题来自另一个Stackoverflow问题的答案:

Preventing JInternalFrame from being moved out of a JDesktopPane

1 个答案:

答案 0 :(得分:1)

使用Java 1.8.0时,只有在使用Mac OS X时才会出现这个问题。当Mac OS X" Mac OS X"没有使用外观。这段代码为我解决了这个问题:

try  
  { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); }
catch (Exception e)
  { e.printStackTrace(); }