2009-07-04 6 views
1

Я пытаюсь выделить JInternalFrame, т. Е. Удалить заголовок заголовка по умолчанию, используя следующий код;Undecorate JInternalFrame на MacOS

BasicInternalFrameUI ui = (BasicInternalFrameUI)internalFrame.getUI(); 
ui.getNorthPane().setPrefrredSize(new Dimension(0,0)); 

Я работает на окнах, но вторая линия бросает NullPointerException на MacOS

Любые идеи, почему и как получить вокруг него?

ответ

0

На Mac у JInternalFrame нет северного окна. Выполняйте код только на платформах Mac OS;

// only remove the northpanel for none Mac OS 
if(!(System.getProperty("os.name").startsWith("Mac OS"))){ 
    BasicInternalFrameUI ui = (BasicInternalFrameUI) getUI(); 
    ui.getNorthPane().setPrefrredSize(new Dimension(0,0)); 
} 

Так много о кросс-платформенный :-(

0

Я не использую Mac, поэтому я не знаю, что вызывает проблему.

JInternalFrame без заголовка теряет способность к перетаскиванию. Вы должны иметь возможность достичь той же цели, просто добавив JPanel на рабочий стол. Вам нужно будет установить границы панели. Вы также можете использовать один из внутренних кадров таможенных границ на панели:

UIManager.getBorder("InternalFrame.paletteBorder"); 
UIManager.getBorder("InternalFrame.optionDialogBorder"); 

Или, может быть, еще один вариант заключается в использовании:

internalFrame.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE); 

Это заменит строку заголовка с небольшой палитрой, которая можно использовать для перетаскивания внутреннего кадра без кнопок или заголовка.

+0

«А JInternalFrame без заголовка теряет свою способность тянуться», - но он все еще может быть изменен;) –

+0

@ivan У меня есть пользовательский код обрабатывать изменение размера и перетаскивание окна. – n002213f

Смежные вопросы