Gostaria de uma dica para implementar uma tela de confirmação estilo “Tem certeza que deseja sair? S/N” quando o usuário solicita o fechamento de um JFrame ou JDialog.
Confirmar o fechamento do JFrame
H
6 Respostas
L
adicione um WindowListener e implemente o metodo windowClosing(…)
Mais detalhes:
WindowListener http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/WindowListener.html
V
Tente isso:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
* @author volnei
*/
public class Test2 extends JFrame{
public Test2() {
setVisible(true);
setSize(300, 300);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
int i = JOptionPane.showConfirmDialog(null ,"Tem certeza que deseja sair?", "Saída",JOptionPane.YES_NO_OPTION);
if (i == JOptionPane.YES_OPTION) {
System.exit(0);
} else {
repaint();
}
}
});
}
public static void main(String[] args) {
new Test2();
}
}
V
Bem bolado o codigo, hheheheh
Uma coisa meio off topic.
Como o JOptionPane faz pra se auto-centralizar na tela?
VELO
V
2 likes
Sou uma ideia para muda a confirmação de saida de yes/no para sim/não.
Object[] options = { "Sim", "Não" };
int i = JOptionPane.showOptionDialog(null,
"Tem certeza que deseja sair?", "Saída",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (i == JOptionPane.YES_OPTION) {
System.exit(0);
}
Fica mais verde amarelo assim.
VELO
W
Bem bolado o codigo, hhehehehUma coisa meio off topic.
Como o JOptionPane faz pra se auto-centralizar na tela?
VELO
eh soh vc usar o toolkit e pegar o tamanho da tela, exemplo de janela centralizada:
import java.awt.*;
import javax.swing.*;
public class JanelaCentro extends JFrame {
public JanelaCentro() {
Toolkit tk = Toolkit.getDefaultToolkit(); //pegar o toolkit padrado do SO
int width = 500; //exemplo de tamanho de largura do frame
int height = 400; //exemplo de tamanho de altura do frame
int px = tk.getScreenSize().width / 2 - width / 2; //criando posicao X
int py = tk.getScreenSize().height / 2 - height / 2; //posicao Y
setBounds(px, py, width, height); //definindo posicao e tamanho do frame
setTitle("janela centralizada");
}
public static void main(String[] args) {
new JanelaCentro().setVisible(true);
}
}
bem facil neh 
V
Na verdade vc pode dar um setRelativeTo() e passar o Frame q vc tem para ser o centro, ou passar null pra ficar no centro da tela.
VELO
Criado 17 de dezembro de 2004
Ultima resposta 22 de abr. de 2005
Respostas 6
Participantes 5
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo