Como abrir um JDialog desde um JFrame

Salve…

Entrei aqui faz pouco tempo e estou gostando muito, pois as pessoas aqui respondem tudo e qualquer coisa de maneira muito gentil e eficaz…e agora tenho mais uma pergunta:

como Abrir um JDialog clicando em um botao que fica no JFrame?

Ex: Minha Janela principal eu tenho o menu Login… e essa janela Principal é um JFrame, ja a janela do Login em si é feita no JDialog…como faço pra clicar em um botão no JFrame e abrir o JDialog?

Supondo que vc já saiba do evento o botão, então:
vc vai colocar no evento do botão

        JDialog dialog = new JDialog();
        dialog.setVisible(true);

esse é um exemplo generico se vc criou seu Jdialog sera assim:

        SeuJDialog dialog = new SeuJDialog();
        dialog.setVisible(true);

Com java 8 foi introduzido a lambda, vc pode criar um evento do botão assim agr:

button.addActionListener(evento -> {/*instruções aqui*/});

que no caso do Jdialog seria assim:

button.addActionListener(evento -> {
        JDialog dialog = new JDialog();
        dialog.setVisible(true);
});

Ola Jean…obrigado pela ajuda…

mas nao entendi bem…sou iniciante em java…e estou usando um Item de menu

Ex: tenho uma barra de menus onde tenho a opção Login e dentro de Login tenho o item de menu, Logar. quero setar esse item de menu para uma janela JDialog, o codigo vc ja me passou, mas como faço pra setar…pois nao estou conseguindo…veja abaixo como entendi:

Login dialog = new Login();
dialog.setVisible(true);

inseri o codito dessa forma…esta correto?

Sim a forma está correta, mas como assim setar o item de menu para o Jdialog? vc quer criar um evento q ao clicar nesse item menu abra o Jdialog?
se sim vc pode usar a IDE para criar o evento:


Clique sobre o JmenuItem e adicione o evento!
Outra forma é usar a lambda, no construtor da Classe que está a o JmenuItem vc faz assim exemplo:

public TelaPrincipal() {
        initComponents();
        JmenuItem.addActionListener(evento -> {/*Instruções*/});
    }

Tem essas duas forma, Lembrando que isso ai é no caso de vc está usando Swing e não javaFX, se tiver mais dúvida pode perguntar :slight_smile:

Valeu meu chapa…

funcionou que foi uma maravilha…valeu mesmo…nao tava conseguindo fazer isso de jeito nenhum…

brigadão…

1 curtida

Fico feliz q tenha conseguido :slight_smile:

Jean…

Houve um problema na minha aplicação e tive que fazer novamente

cheguei até a parte de abrir o danado do Jdialog, fiz exatamente como vc me ensinou…Mas quando coloquei o codigo deu esse erro: Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: TelaPrincipal$Login (wrong name: TelaPrincipal$login)

Eu usei esse codigo:

Login dialog = new Login();
dialog.setVisible(true);

o que deu errado dessa vez…?

Voce pode está executando o comando na pasta errada, com o nome da classe errada. vc está utilizando alguma IDE? o nome da Classe é TelaPrincipalLogin?

To usando o netbeans…

e o Nome da classe principal é TelaPrincipal.

ai eu crio o janela Jdialog e seto o botao login que esta na classe Principal para o Jdialog, mas ai da esse erro…na verdade esse erro dava quando fazia antes…

cara ai só vendo o código para te ajudar mesmo, pq ai pode ser erro na importação ou no diretório , pq ele deve ta tentando chamar essa classe TelaPrincipalLogin e não encontra. Se vc quiser vc pode upar o seu projeto, mas só caso vc queira mesmo viu, ou então coloque ele aqui para dá uma olhada

beleza…vou tentar fazer isso…