hiding title bar of JInternalFrame? -java

17,757

Solution 1

I solved this problem this way: I subclass JInternalFrame and add the following code to its constructor. (I get the subclassing for free because I use netBeans' GUI Builder)

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

in your case I think

Solution 2

First convert the internalframe to basicinternalframe.

do it like this:-

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

After this your title bar will be invisible.

Solution 3

What the others say. Depending on the framework the ui might get updated though, which will make it reappear. So for me it worked initializing the JInternalFrame like this:

        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
           }
        };
Share:
17,757
Tushar Chutani
Author by

Tushar Chutani

Updated on June 21, 2022

Comments

  • Tushar Chutani
    Tushar Chutani almost 2 years

    I found some code online, I edited it a bit. I want to hide title bar of a 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);
    

    The problem is that the title bar isn't being hidden for some reason. Thanks.

  • ThomasG
    ThomasG almost 10 years
    Nice, this is the correct answer, unlike .setUI(null)! I also read somewhere that you might need to do this again after certain events (like minimizing the window)
  • Parker
    Parker almost 9 years
    This is the correct answer. It is also useful when combined with frame.setBorder(null); to use a JInternalFrame as a solo component within a top-level JFrame as if it were a JPanel.
  • George
    George over 8 years
    Worked for me. I wasn't even going to try, but works like charm. Thank you.