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
}
};
Author by
Tushar Chutani
Updated on June 21, 2022Comments
-
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 almost 10 yearsNice, 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 almost 9 yearsThis is the correct answer. It is also useful when combined with
frame.setBorder(null);
to use aJInternalFrame
as a solo component within a top-levelJFrame
as if it were aJPanel
. -
George over 8 yearsWorked for me. I wasn't even going to try, but works like charm. Thank you.