ocultar la barra de título de JInternalFrame? -Java

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

El problema es que la barra de título no se oculta por alguna razón. Gracias.

preguntado el 28 de agosto de 11 a las 02:08

4 Respuestas

Resolví este problema de esta manera: yo subclase JInternalFrame y agregue el siguiente código a su constructor. (Obtengo la subclasificación de forma gratuita porque uso el Constructor de GUI de netBeans)

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

en tu caso yo creo

Respondido 06 Abr '14, 03:04

Bien, esta es la respuesta correcta, ¡a diferencia de .setUI (nulo)! También leí en alguna parte que es posible que deba hacer esto nuevamente después de ciertos eventos (como minimizar la ventana): Dmitry Avtonomov

Esta es la respuesta correcta. También es útil cuando se combina con frame.setBorder(null); utilizar una JInternalFrame como un componente en solitario dentro de un nivel superior JFrame como si fuera un JPanel. - vallismortis

Trabajó para mi. Ni siquiera iba a intentarlo, pero funciona de maravilla. Gracias. - George

Primero convierta el marco interno en marco interno básico.

Hazlo asi:-

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

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

Respondido 15 Jul 15, 14:07

Lo que dicen los demás. Sin embargo, dependiendo del marco, la interfaz de usuario podría actualizarse, lo que hará que vuelva a aparecer. Así que para mí funcionó inicializar el JInternalFrame Me gusta esto:

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

Respondido 10 Jul 18, 00:07

para mi esto funciona muy bien:

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

Gracias.

Respondido el 12 de junio de 16 a las 04:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.