magix2003
23-02-2007, 10:30
Ciao a tutti,
per esercitarmi in Java stavo iniziando a mettere giù una calcolatrice visuale tipo quella di windows. Dopo aver implementato le funzioni base, ho deciso di inserire una funzione che chiede la conferma prima di chiudere la JFrame principale. Siccome esistono due metodi per chiudere la finestra, uno tramite menu e l'altro tramite la normale croce, ho creato due metodi differenti:
Questa è la classe che viene chiamata se viene schiacciata la croce
private class CloseWarning extends WindowAdapter{
public void windowClosing(WindowEvent e){
int res = JOptionPane.showConfirmDialog (CalculatorDemo.this, "Chiudere la finestra?", "Frame Test", JOptionPane.YES_NO_OPTION);
if (res == JOptionPane.YES_OPTION){
System.exit(0);
}
}
}
Questa è la classe che viene chiamata se si usa il menu:
private class Exit implements ActionListener {
public void actionPerformed(ActionEvent e){
ClWarning cw = new ClWarning();
cw.windowClosing(e);
}
}
Questo è il rispettivo metodo:
private class ClWarning{
public void windowClosing(ActionEvent e){
int res = JOptionPane.showConfirmDialog (CalculatorDemo.this, "Chiudere la finestra?", "Frame Test", JOptionPane.YES_NO_OPTION);
if (res == JOptionPane.YES_OPTION){
new Exit();
}
}
}
e questo è il costruttore della classe (che estende JFrame):
public CalculatorDemo(){
super("Calculator ver. 0.1");
this.addWindowListener(new CloseWarning());
....
menu = new JMenu("File");
help = new JMenu("Help");
item = new JMenuItem("Exit ALT+F4");
item.addActionListener(new Exit());
menu.add(item);
info = new JMenuItem("About Calculator");
help.add(info);
bar = new JMenuBar();
bar.add(menu);
bar.add(help);
setJMenuBar(bar);
....
}
Il problema è che se uso il menu mi appare il messaggio come dovrebbe e se schiaccio no, ritorna al jframe. Mentre se uso la croce anche se seleziono no, mi esce lo stesso.
Spero in un vostro aiuto. Se vi servono altre info fatemi sapere
Grazie
per esercitarmi in Java stavo iniziando a mettere giù una calcolatrice visuale tipo quella di windows. Dopo aver implementato le funzioni base, ho deciso di inserire una funzione che chiede la conferma prima di chiudere la JFrame principale. Siccome esistono due metodi per chiudere la finestra, uno tramite menu e l'altro tramite la normale croce, ho creato due metodi differenti:
Questa è la classe che viene chiamata se viene schiacciata la croce
private class CloseWarning extends WindowAdapter{
public void windowClosing(WindowEvent e){
int res = JOptionPane.showConfirmDialog (CalculatorDemo.this, "Chiudere la finestra?", "Frame Test", JOptionPane.YES_NO_OPTION);
if (res == JOptionPane.YES_OPTION){
System.exit(0);
}
}
}
Questa è la classe che viene chiamata se si usa il menu:
private class Exit implements ActionListener {
public void actionPerformed(ActionEvent e){
ClWarning cw = new ClWarning();
cw.windowClosing(e);
}
}
Questo è il rispettivo metodo:
private class ClWarning{
public void windowClosing(ActionEvent e){
int res = JOptionPane.showConfirmDialog (CalculatorDemo.this, "Chiudere la finestra?", "Frame Test", JOptionPane.YES_NO_OPTION);
if (res == JOptionPane.YES_OPTION){
new Exit();
}
}
}
e questo è il costruttore della classe (che estende JFrame):
public CalculatorDemo(){
super("Calculator ver. 0.1");
this.addWindowListener(new CloseWarning());
....
menu = new JMenu("File");
help = new JMenu("Help");
item = new JMenuItem("Exit ALT+F4");
item.addActionListener(new Exit());
menu.add(item);
info = new JMenuItem("About Calculator");
help.add(info);
bar = new JMenuBar();
bar.add(menu);
bar.add(help);
setJMenuBar(bar);
....
}
Il problema è che se uso il menu mi appare il messaggio come dovrebbe e se schiaccio no, ritorna al jframe. Mentre se uso la croce anche se seleziono no, mi esce lo stesso.
Spero in un vostro aiuto. Se vi servono altre info fatemi sapere
Grazie