Na hora de fechar o jframe quero colocar:
jopitonpane.showmessagedialog(“Deseja Fechar esta janela”, joptionpane.ye_no_option)
Se clicar no NO, não fechar o jframe.
Alguem pode me ajudar?
Obrigado.
Na hora de fechar o jframe quero colocar:
jopitonpane.showmessagedialog(“Deseja Fechar esta janela”, joptionpane.ye_no_option)
Se clicar no NO, não fechar o jframe.
Alguem pode me ajudar?
Obrigado.
No construtor do seu JFrame defina ele como DO_NOTHING_ON_CLOSE:
Depois, adicione um WindowListener ao seu JFrame, com a confirmação:
seuFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
if (JOptionPane.showConfirmationDialog(SeuFrame.this, "Deseja Fechar esta janela?", JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION)
return;
dispose(); //Ou System.exit(0), se for a última janela da sua aplicação
}
}):
Talvez o comando do JOptionPane esteja um pouco errado, fiz de cabeça. Mas você corrige aí, a idéia é essa.
Hehehe,
Eu tava fazendo assim, mas nao tava funcionando, era a porcaria do DO_NOTHING_ON_CLOSE
Hehehe
Vacilei!
[quote=ViniGodoy]No construtor do seu JFrame defina ele como DO_NOTHING_ON_CLOSE:
Depois, adicione um WindowListener ao seu JFrame, com a confirmação:
seuFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
if (JOptionPane.showConfirmationDialog(SeuFrame.this, "Deseja Fechar esta janela?", JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION)
return;
dispose(); //Ou System.exit(0), se for a última janela da sua aplicação
}
}):
Talvez o comando do JOptionPane esteja um pouco errado, fiz de cabeça. Mas você corrige aí, a idéia é essa.[/quote]
Cara, do seu jeito funciona perfeito mais nao resolveu meu problema, pois a janela nao esta sendo fechada pelo X la no canto, mas por um CommandButton dentro da janela:
Entao tive que fazer assim:
Codigo do botao:
public void actionPerformed(ActionEvent e) {
try {
super.getFrame().dispose();
tabPrincipal.remove(getFrame().getRootPane());
} catch (UnsupportedOperationException ex) {
}
}
Codigo dispose() da JFrame:
@Override
public void dispose() {
boolean fechar = true;
if (getRegistro().getId().equals(0l)) {
if (JOptionPane.showConfirmDialog(this, "Os dados ainda nao foram salvos, deseja fechar a janela?", "Fechar a janale", JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION) {
fechar = false;
}
}
if (fechar) {
this.fornecedor = null;
this.entradaProdutoTableModel = null;
this.produtoSelecionado = null;
this.threadFiltro.interrupt();
this.threadFiltro = null;
super.dispose();
}else{
throw new UnsupportedOperationException();
}
}
Assim, se nao for pra fechar dou o throw e no botao de fechar trato esse throw…
Valeu!
Quem falou em commandbutton? Você adicionou um windowListener, como eu falei? É ele que reage ao X.
Desculpa, é que eu nao expliquei o cenario todo…
O JFrame nao esta visivel na tela, eu to apenas colocando o conteudo dele “getRootPane” dentro de um JTabbed, e em cada aba eu adiciono um Label com o nome e icone da janela e um commandbutton que tem a funcao de fechar a aba do jttabedpane, porem, so remover a aba, a janela (jframe) continua ainda instanciada, por isso esse commandbutton que fica na aba chama o dispose do JFrame, entao o codigo meu funcionou do jeito que eu postei ai em cima se nao for para fechar, dou um throw dentro do dispose do jframe, ai nao remove a aba.
Veja a tela:
O CommandButton é o X de cada aba
Sacou?
ah tá… agora sim.