2011-08-28 210 views
8

Encontré código en línea, lo edité un poco. Quiero ocultar la barra de título de un JInternalFrame.ocultando la barra de título de 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); 

El problema es que la barra de título no está siendo ocultado por alguna razón. Gracias.

Respuesta

11

primer convertido a la internalframe basicinternalframe.

hacerlo de esta manera: -

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

Después de esto la barra de título será invisible.

10

He resuelto este problema de esta manera: subclase JInternalFrame y agrego el siguiente código a su constructor. (Me da la subclasificación de forma gratuita porque uso Constructor de GUI netBeans')

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

en su caso creo que

+0

Niza, esta es la respuesta correcta, a diferencia de .setUI (nulo)! También leí en alguna parte que podría necesitar hacer esto nuevamente después de ciertos eventos (como minimizar la ventana) –

+0

Esta es la respuesta correcta. También es útil cuando se combina con 'frame.setBorder (null);' para usar un ['JInternalFrame'] (https://docs.oracle.com/javase/8/docs/api/javax/swing/JInternalFrame.html) como un componente individual dentro de un nivel superior ['JFrame'] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html) como si fuera un [' JPanel '] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html). – vallismortis

+0

Funcionó para mí. Ni siquiera iba a intentarlo, pero funciona como el encanto. Gracias. – George

0

para mí esto funciona muy bien:

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

gracias.

Cuestiones relacionadas