Pregunta

import javax.swing.*;

class Frame extends JFrame{
    Frame() {
        JFrame j = new JFrame();
        j.setBounds(100, 200, 120, 120);
        j.setTitle("null");
        j.setVisible(true);
        j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

public class test001 {

    public static void main (String Args[]){
        Frame f = new Frame();
         System.out.print("Visible = True");

        f.setVisible(false);
        System.out.print("Visible = false");
    }
}

después del comando setVisible (falso). La ventana JFrame muestran todavía en mi escritorio. ¿Cómo puedo arreglar eso?

¿Fue útil?

Solución

Usted está creando otro JFrame dentro de su constructor. Suponiendo que lo que quiere es tu clase Frame ser invisible, hacer esto:

class Frame extends JFrame {

   Frame() {
      setBounds(100, 200, 120, 120);
      setTitle("null");
      setVisible(true);
      setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
   }
}

public class test001 {

   public static void main(String Args[]) {
      Frame f = new Frame();
      System.out.print("Visible = True");

      f.setVisible(false);
      System.out.print("Visible = false");
   }
}

Otros consejos

El problema es que su principal método utiliza diferentes JFrame que su constructor. Su constructor de marco crea nueva instancia JFrame (utilizando las nuevas JFrame). Cuando se llama a f.setVisible (falso), se va a su marco, pero no a JFrame creado.

El problema aquí es que su clase "marco" instanciates un nuevo JFrame. Llamando setVisible en el Marco no afecta a la JFrame que está siendo mostrado.

Puede solucionarlo, ya sea usando sólo una instancia de JFrame, o simplemente la subclasificación. No haga ambas cosas.

Además de los dos marcos diferentes que usted se refiere (este es el problema contestado https://stackoverflow.com/a/1450488/ 1326149 ), que debe hacer todas las operaciones de gráficos en el hilo EVT (debido a que su programa aunque funciona muy bien para usted podría ser no portátil para diferentes plataformas).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top