Исключение в иконизации JInternalFrame с DefaultDesktopManager

Я пытаюсь использовать 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:

Предотвращение перемещения JInternalFrame из JDesktopPane


person Naive Developer    schedule 27.02.2015    source источник
comment
Та же проблема с запуском java 1.8.0_31 в Mac OS X 10.11.3   -  person Gary Riley    schedule 05.03.2016
comment
Также сбой с 1.8.0_73-b02 в Mac OS X, но не сбой в Ubuntu Linux 14.04 с 1.8.0_45-b14 или Windows 7 с 1.8.0_31-b14.   -  person Gary Riley    schedule 05.03.2016


Ответы (1)


С Java 1.8.0 проблема возникает у меня только при использовании Mac OS X. Проблема исчезает, когда внешний вид «Mac OS X» не используется. Этот код решил проблему для меня:

try  
  { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); }
catch (Exception e)
  { e.printStackTrace(); }
person Gary Riley    schedule 05.03.2016