скрытие строки заголовка JInternalFrame?-Джава - PullRequest
9 голосов
/ 28 августа 2011

Я нашел некоторый код в Интернете, я немного его отредактировал.Я хочу скрыть строку заголовка 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 ]

12 голосов
/ 03 июня 2013

Сначала преобразуйте внутренний кадр в базовый внутренний.

сделай так: -

BasicInternalFrameUI bi = (BasicInternalFrameUI)your_internalframe_object.getUI();
bi.setNorthPane(null);

После этого ваша строка заголовка станет невидимой.

11 голосов
/ 06 апреля 2014

Я решил эту проблему следующим образом: я создал подкласс JInternalFrame и добавил следующий код в его конструктор. (Я получаю подклассы бесплатно, потому что я использую GUI Builder netBeans)

((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);

в твоем случае я думаю

0 голосов
/ 10 июля 2018

Что говорят другие. В зависимости от структуры пользовательский интерфейс может быть обновлен, что заставит его появиться снова. Так что для меня это сработало при инициализации 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
           }
        };
0 голосов
/ 12 июня 2016

для меня это работает очень хорошо:

    putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
    getRootPane().setWindowDecorationStyle(JRootPane.NONE);
    ((BasicInternalFrameUI) this.getUI()).setNorthPane(null);
    this.setBorder(null);

спасибо.

...