Un JFrame abriendo otro

Tengo un JFrame y JPanel lleno de Jsomethings con un oyente de acción . Cuando el usuario hace clic en un objeto, quiero abrir otro JFrame. Aquí esta lo que hice:

public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();

    if (source == rejectionbutton){
        RejectApp ra = new RejectApp();
        ra.main(null);

    }

}

(RejectApp llama a un nuevo JFrame). Entonces se abre otro JFrame en la pantalla con más opciones. Funciona bien (hasta ahora), pero quiero saber si es este estándar. Me refiero a llamar al método principal de esta manera? Otra pregunta es, sin usar un cardlayout (que no quiero usar), ¿es la mejor manera de manejar múltiples paneles, haciendo este tipo de cosas?

Respuesta 1

Prefiero hacer una nueva instancia de JFrame o una subclase, o llamar a un nuevo método que crea un nuevo JFrame:

public void actionPerformed(ActionEvent e) {
Object source = e.getSource();

if (source == rejectionbutton){
    JFrame frame = new JFrame("New Frame");
   //or
   makeNewFrame();
}

}

Otro Layout-Manager simple es BorderLayout, es el Layout-Manager predeterminado de la clase JFrame.

Respuesta: 2

Simplemente no entiendo por qué uno debe usar Runtime.addShutdownHook. Si desea hacer una limpieza cuando se cierra el jvm, ¿por qué no simplemente sobrecargar el método de finalización de la clase daemon? Cuál es el ...

¿Alguien sabe dónde puedo encontrar una discusión sobre cómo funciona la inferencia de tipos al usar Generics en Java?

Al usar javac.exe, obtengo el archivo .class. ¿Es el código de bytes del archivo .class? o ¿El archivo .class incluye bytecode? Después de compilar .java en cmd, ¿dónde está el bytecode?

Me pregunto cómo puedo escapar del código HTML en JSON. Estoy usando Jackson como mi mapeador JSON. En mi contenido tengo varios caracteres: etiquetas, comillas simples, comillas dobles, nuevas líneas de caracteres (\ n), pestañas, etc.