Como abrir um JDialog desde um JFrame

10 respostas Resolvido
Legolas

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?

10 Respostas

JeanJavaMan

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);
});
Legolas
Solucao aceita

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?

JeanJavaMan

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:

Legolas

Valeu meu chapa…

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

brigadão…

JeanJavaMan

Fico feliz q tenha conseguido :slight_smile:

Legolas

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…?

JeanJavaMan

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?

Legolas

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…

JeanJavaMan

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

Legolas

beleza…vou tentar fazer isso…

Criado 19 de janeiro de 2016
Ultima resposta 21 de jan. de 2016
Respostas 10
Participantes 2