¿Cómo podemos dispose() un JPanel?

He hecho jPanel1.removeAll() y ahora quiero JPanel para ser eliminados de modo que jPanelParent.getComponents() puede volver

Component[] components = this.jPanelParent.getComponents();  ///Returns 5 Components      
JPanel last = (JPanel)components[components.length];
last.removeAll();
//last.dispose()   NOT AVAILABLE

Ahora, después de código de arriba si me quedo .getComponents() yo no quiero llegar a ser «el último» en el código anterior

  • Estoy creando un formulario de pedido y uso de paneles para añadir detalles a ese orden, Algo así como este quiero agregar o quitar función para que

3 Comentarios

  1. 5

    Este es un caso clásico de buscar en el lugar equivocado para una respuesta; su pregunta presupone una manera de hacer las cosas, y te preguntas cómo hacer que presupone y un funcionamiento erróneo, y la confusión sobreviene. No ayuda que «tire» es un término utilizado para una operación que no necesita en absoluto, que tiene que ver con la elaboración de la memoria disponible para la recuperación en un entorno donde los programadores a hacer estas cosas.

    Me creer lo que quiero hacer es eliminar la referencia a que el componente de los padres tiene que el JPanel. Que se adapten a su deseo de que getComponents() en el panel de padres no devolver el panel de deshacerse de.

    Para que el panel que se está quitando para ello, se necesita una referencia a los padres del panel y, a continuación, puede quitar desde el panel de padres como usted ha quitado de los componentes del objetivo del panel. De hecho, si el padre panel es el único lugar en el que hace referencia a la de destino, y el destino de los componentes sólo se hace referencia en el destino, usted no tiene que quitar los componentes de destino si usted acaba de quitar el panel de padres de referencia para el objetivo.

    Para pasar una referencia a su padre en el panel a su destino en el panel, y hacer un remove() de la meta del panel del panel de padres en lugar de su hipótesis dispose() de la llamada.

    • «su pregunta presupone una manera de hacer las cosas,» de Hecho. Esto suena como un clásico de la XY problema.
    • lo siento por esa pregunta, soy nuevo en este foro, tengo XY problema, voy a tratar de evitar ese tipo de preguntas. @rcook: Gracias jPanelParent.quitar(y último); trabajó.
    • No hay necesidad de ofrecer disculpas ya que no he hecho nada malo. De hecho, la obtención de nuevos conocimientos a partir de las preguntas es todo lo que la mayoría de la gente quiere ver. — Por favor, aceptar la respuesta si ayudó a resolver el problema. 🙂
  2. 0

    En mi caso, mi grupo estaba en un JDialog, y el siguiente puede trabajar:

    public void dispose() {
        JFrame parent = (JFrame) this.getTopLevelAncestor();
        parent.dispose();
    }

    Sin embargo, creo que explícitamente mantener una referencia a los padres en el panel podría ser menos propenso a errores manera, como se describe en otra respuesta.

Dejar respuesta

Please enter your comment!
Please enter your name here