public class Dlg extends JDialog {
/** Gibt an, ob das Dialogfenster ohne Bedingungen geschlossen werden soll */
private boolean forceClose=false;
public Dlg(Dialog owner, String title, boolean modal) {
super(owner,title,modal);
initDialog();
}
public Dlg(Frame owner, String title, boolean modal) {
super(owner,title,modal);
initDialog();
}
protected void initDialog() {
this.setResizable(true);
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
this.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if(forceClose || canClose()) {
windowClosing();
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
}
}
);
}
public boolean canClose() {
// Hier sagst Du, ob es OK ist oder nicht
// z.B. abhängig davon, ob sich Daten geändert haben oder nicht; Dialog mit Frage etc.
return false;
}
protected void windowClosing() {
// Hier kannst Du noch was machen, bevor das Dialogfenster geschlossen wird
}
public void closeDialog() {
// Mit dieser Methode wird das Dialogfenster ohne Bedingungen geschlossen
// Es bleibt dem Programmierer überlassen vorher canClose() aufzurufen
this.forceClose = true;
dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
}
}