Скрытие строки заголовка JInternalFrame? -Джава
Я нашел некоторый код в Интернете, я немного его отредактировал. Я хочу скрыть строку заголовка JInternalFrame.
JInternalFrame frame = new JInternalFrame();
// Get the title bar and set it to null
setRootPaneCheckingEnabled(false);
javax.swing.plaf.InternalFrameUI ifu= frame.getUI();
((javax.swing.plaf.basic.BasicInternalFrameUI)ifu).setNorthPane(null);
frame.setLocation(i*50+10, i*50+10);
frame.setSize(200, 150);
//frame.setBackground(Color.white);
frame.setVisible(true);
desktop.add(frame);
Проблема в том, что строка заголовка по какой-то причине не скрыта. Благодарю.
4 ответа
Я решил эту проблему следующим образом: я создаю подкласс JInternalFrame и добавляю следующий код в его конструктор. (Я получаю подклассы бесплатно, потому что я использую GUI Builder netBeans)
((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);
в твоем случае я думаю
Сначала преобразуйте внутренний фрейм в базовый.
сделай это так:-
BasicInternalFrameUI bi = (BasicInternalFrameUI)your_internalframe_object.getUI();
bi.setNorthPane(null);
После этого ваша строка заголовка станет невидимой.
Что говорят другие В зависимости от структуры пользовательский интерфейс может быть обновлен, что заставит его появиться снова. Так что для меня это сработало при инициализации JInternalFrame следующим образом:
JInternalFrame internalFrame = new JInternalFrame() {
@Override
public void setUI(InternalFrameUI ui) {
super.setUI(ui); // this gets called internally when updating the ui and makes the northPane reappear
BasicInternalFrameUI frameUI = (BasicInternalFrameUI) getUI(); // so...
if (frameUI != null) frameUI.setNorthPane(null); // lets get rid of it
}
};
Для меня это работает очень хорошо:
putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
((BasicInternalFrameUI) this.getUI()).setNorthPane(null);
this.setBorder(null);
Благодарю.