Interface Gráfica (JPanel)

Não consigo fazer com que meu método “Cadastro Aluno” mostre meu JPanel quando eu clico no “Cadastro Aluno”;
Tentei um AcitionListener, mas não deu certo;
e o JPanel tem tambem um “setVisible(true)” que eu não sei o que fazer com ele;
Na linha 17 eu cria uma JDialog, na 24 eu criei um JPanel, já na linha 38 eu tentei fazer a interação com o “ActionListener”, mas como eu citei, n deu certo, alguém da um help aqui!

    package testwindows;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class TestWindows {
    public static void main(String[] args) {
    
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Mostra Botão de Fechar do Sistema
        frame.setSize(500, 450); // Define tamanho da Janela
        frame.setLocation(300,200); //Centraliza a Janela
       
        JDialog caixa = new JDialog(frame); //Instancia uma nova caixa de diálogo para 
        caixa.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //Mostra Botão de fechar da Caixa?
        caixa.setBounds(350, 300, 300, 150); //Define o tamanho da caixa
        caixa.setTitle("Cadastro Aluno"); //Define o título da caixa
        caixa.setModal(true); // Perguntar a professora; //Seria pra ter caixs com modos diferentes também?
        caixa.setResizable(true); //Redimenciona a caixa
        
        JPanel painel = new JPanel(); //Instancia um novo container para inserir componentes
        painel.setLayout(new GridLayout(3,2));
        
        caixa.add(painel);
        //caixa.setVisible(true);
        
        // Menus
        JMenu menuAluno = new JMenu("Aluno");
        JMenu menuProfessor = new JMenu("Professor");
        JMenu menuCurso = new JMenu("Curso");
        JMenu menuSistema = new JMenu("Sistema");
        JMenuBar barraMenu = new JMenuBar();
        
        //Itens Menu Aluno
        JMenuItem itemCadastroAluno = new JMenuItem("Cadastrar");//Adiciona interação rel ao item/método "cadastrar" de "Aluno"
        itemCadastroAluno.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                
            }
        });
        JMenuItem itemProcurarAluno = new JMenuItem("Procurar");
        JMenuItem itemRemoverAluno = new JMenuItem("Remover");
        barraMenu.add(menuAluno);// Add o Menu Aluno na barra
        //add itens no Menu Aluno
        menuAluno.add(itemCadastroAluno);
        menuAluno.add(itemProcurarAluno);
        menuAluno.add(itemRemoverAluno);
        
        //Itens Menu Professor
        JMenuItem itemCadastrarProfessor = new JMenuItem("Cadastrar");
        JMenuItem itemProcurarProfessor = new JMenuItem("Procurar");
        JMenuItem itemRemoverProfessor = new JMenuItem("Remover");
        barraMenu.add(menuProfessor); // Add o Menu Professor na barra
        //add itens no Menu Professor
        menuProfessor.add(itemCadastrarProfessor);
        menuProfessor.add(itemProcurarProfessor);
        menuProfessor.add(itemRemoverProfessor);
        
        //Itens Menu Curso
        JMenuItem itemCadastrarCurso = new JMenuItem("Cadastrar");
        JMenuItem itemProcurarCurso = new JMenuItem("Procurar");
        JMenuItem itemRemoverCurso = new JMenuItem("Remover");
        barraMenu.add(menuCurso);
        //add itens no Menu Curso
        menuCurso.add(itemCadastrarCurso);
        menuCurso.add(itemProcurarCurso);
        menuCurso.add(itemRemoverCurso);
        
        //Itens Menu Sistema
        JMenuItem itemSobreSistema = new JMenuItem("Sobre");
        itemSobreSistema.addActionListener(new ActionListener(){// Adiciona interação real no item/método "Sobre"
            public void actionPerformed(ActionEvent e){
             JOptionPane.showMessageDialog(itemSobreSistema, "Desenvolvido por Douglas Rafael", "Versão 1.0", JOptionPane.INFORMATION_MESSAGE);   
            }
        });
        

        JMenuItem itemSairSistema = new JMenuItem("Sair");// Adiciona interação real no item/método "Sair"
        itemSairSistema.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                int retorno = JOptionPane.showConfirmDialog(itemSairSistema, "Deseja Realmente Sair? ", "Sair", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                if (retorno == JOptionPane.YES_OPTION)
                    System.exit(0);
                else if(retorno == JOptionPane.NO_OPTION)
                    JOptionPane.showMessageDialog(itemSairSistema, "Obrigado por continuar", "Agradecimento", JOptionPane.INFORMATION_MESSAGE);
            }
        });
        //Add itens no Menu
        menuSistema.add(itemSobreSistema);
        menuSistema.add(itemSairSistema);
        
        
        
        barraMenu.add(menuSistema); //add Menu Sistema na barra
        frame.getContentPane().add(barraMenu, BorderLayout.NORTH);// Exibir a barra no Painel
      
        frame.setVisible(true);//Tornar Painel visível
    }
    
}

Esse é o “Cadastrar Aluno” que quero a interação:

Tem a tela Principal e a tela Cadastro de Aluno na mesma classe, é isso?
Você precisa criar cada tela em uma classe diferente.

Tem que ter a classe TelaPrincipal e a classe TelaCadastroAluno.

Assim, quando precisar chamar qualquer outra tela a partir da tela principal pode usar isso:

JMenuItem itemCadastroAluno = new JMenuItem("Cadastrar");//Adiciona interação rel ao item/método "cadastrar" de "Aluno"
itemCadastroAluno.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        TelaCadastroAluno cadAluno = new TelaCadastroAluno();
        cadAluno.setVisible(true);
    }
});

Não amigo, a professora só mostrou criando no método main, esse é todo o código, n tem outras classes;
Oh, tentei essa logica, mas não funcionou :confused:

Então tenta da seguinte forma:

JMenuItem itemCadastroAluno = new JMenuItem("Cadastrar");//Adiciona interação rel aoitem/método "cadastrar" de "Aluno"
itemCadastroAluno.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        caixa.setVisible(true);
    }
});

Lembrando que a declaração do objeto caixa deve ser feita fora do método main para que tenha acesso global de todas as classes.

public class TestWindows {

    private JDialog caixa;

    public static void main(String[] args) {
        JFrame frame = new JFrame();

E na construção do JDialog deve usar a variável global e não deve declarar um novo objeto:

JDialog caixa = new JDialog(frame); //jeito errado
caixa = new JDialog(frame); //jeito correto

Olha, funcionou desse jeito:

        JMenuItem itemCadastroAluno = new JMenuItem("Cadastrar");//Adiciona interação rel ao item/método "cadastrar" de "Aluno"
    itemCadastroAluno.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            
            caixa.setVisible(true);
        }
    });

Lamentável que tenha tantos professores que insistem em ensinar a programar de forma monolítica… :frowning: