Estou com uma dúvida, talvez seja muito boba. Criei um frame principal com menus. Ao clicar num JmenuItem, por exemplo cadastro,Fornedecores, abre uma tela de cadastro. Eu instancio essas janelas pelo frame principal. E no final de cada eu coloco .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE). O problema é que quando eu fecho a janela de cadastro, acaba fechando a janela principal também, ou seja, eu tenho que abrir o frame principal de novo.
Gostaria de saber como eu faço para que quando eu fechar alguma janela que eu chamei pelo evento do menu, feche somente ela, e não a aplicação inteira.
Eu tenho que colocar o nome da classe ao invés do JFrame, assim:
boa tarde vamos la.
no seu formulario principal onde tem os menus deixa como esta, pois ele que é a raiz da aplicação e se fechar ele o programa esta encerrado…
quando vc coloca JFrame.EXIT_ON_CLOSE se refere a uma constante da classe JFrame e esta correto utilizar assim mesmo.
agora nas demais classes tipo Fornecedores muda pra DISPOSE_ON_CLOSE no local de EXIT_ON_CLOSE.
S
Soruji
Acho que eu não expliquei direito:
Na janela principal da aplicação quando eu faço isso:
Quando eu fecho a janela de cadastro de fornecedores, ela fecha também a aplicação principal.
eu tirei o método main da classe Fornecedores e estou colocando na classe principal, para chamar quando eu clicar no menu.
Minha questão é, se eu colocar o DISPOSE, eu só vou fechar a janela Fornecedores, ou eu vou fechar ela junto com a classe principal? (Eu não quero que a classe principal seja fechada, pq convém que eu faça outros tipos de operação).
Obrigado.
R
rogerioeerr
compreendi sim, e se colocar o DISPOSE fechara apenas a tela de fornecedores sim, agora uma sugestão o método setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pode ser colocado dentro da propria classe fornecedores.
S
Soruji
Mas qual seria a lógica disso?
Vejo conveniente fazer isso se eu for executar essa classe separadamente. Mas se eu posso chamar ela de dentro de uma outra classe, não vejo necessidade de colocar esse método dentro de cada classe.
Isso eu não entendi.
R
rogerioeerr
seria uma forma de encapsulamento ou simples padronização, já que no seu Frame vc define tamanho componentes e porque não modo de se fechar.