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.
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
Tente isso:
[code]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();
}
}
[/code]
Bem bolado o codigo, hheheheh
Uma coisa meio off topic.
Como o JOptionPane faz pra se auto-centralizar na tela?
VELO
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
[quote=velo]Bem bolado o codigo, hheheheh
Uma coisa meio off topic.
Como o JOptionPane faz pra se auto-centralizar na tela?
VELO[/quote]
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
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