2011-08-28 62 views
8

我在网上找到了一些代码,我编辑了一下。我想隐藏JInternalFrame的标题栏。隐藏JInternalFrame的标题栏? -java

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); 

问题是标题栏并未因某些原因而被隐藏。 谢谢。

回答

11

首先将内部帧转换为基本内部帧。

像这样做: -

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

这个标题栏后,将是不可见的。

10

我用这种方法解决了这个问题:我将子类JInternalFrame添加到它的构造函数中。 (我得到的子类的自由,因为我使用NetBeans的GUI构建器)

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

你的情况,我认为

+0

不错,这是正确的答案,不像.setUI(null)!我还在某处看到,在某些事件发生后(如最小化窗口),您可能需要重新执行此操作。 –

+0

这是正确的答案。与'frame.setBorder(null);'结合使用['JInternalFrame'](https://docs.oracle.com/javase/8/docs/api/javax/swing/JInternalFrame.html )作为顶级['JFrame'](http://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html)中的独奏组件,就好像它是['JPanel '](http://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html)。 – vallismortis

+0

为我工作。我甚至不会尝试,但像魅力一样。谢谢。 – George

0

这对我来说工作得非常好:

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

感谢。