No problema, grazie ancora per l'aiuto!
alla prossima![]()
No problema, grazie ancora per l'aiuto!
alla prossima![]()
Il tuo codice si può comunque migliorare un po'. In particolare, non usare quel 2 come quarto parametro di showConfirmDialog: c'è una costante apposita che ne rende più chiaro il significato: JOptionPane.OK_CANCEL_OPTION
Idem per JOptionPane.YES_OPTION al posto di 0.
Potresti inoltre usare una classe anonima:
codice:this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { int exitOption = JOptionPane.showConfirmDialog( e.getComponent(), "Uscire da Orders Manager?", "Orders Manager - Esci", JOptionPane.OK_CANCEL_OPTION); if ( exitOption == JOptionPane.YES_OPTION ) { System.exit(0); } } });
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Si hai ragione il metodo modificato cosi con le notazioni testuali e il controllo su int mi pare molto meglio, grazie. Ho gia aggiornato tutto.
MI piace un sacco anche la notzaione con classe anonima ma se lo dichiaro cosi non perdo la mia classe estesa? Cioe
a che serve aver esteso
se poi non istanzio addWindowListener(new MioWindowAdapter());codice:class MioWindowAdapter extends java.awt.event.WindowAdapter
E il metodo che invece uso in overload per far fare la stessa cosa al bottone che richiamo cosi
grazie dei consigli e abbi pazienza se ogni tanto mi sfugge qualcosa sono agli inizicodice:private void esciActionPerformed(java.awt.event.ActionEvent evt) { MioWindowAdapter uscita = new MioWindowAdapter(); uscita.windowClosing(this); }
La classe creata facendoOriginariamente inviato da Kneos
MI piace un sacco anche la notzaione con classe anonima ma se lo dichiaro cosi non perdo la mia classe estesa? Cioe
a che serve aver esteso
se poi non istanzio addWindowListener(new MioWindowAdapter());codice:class MioWindowAdapter extends java.awt.event.WindowAdapter
addWindowListener(new WindowAdapter() { ... });
è una classe interna e anonima che estende WindowAdapter e che non c'entra nulla con MioWindowAdapter (che volendo puoi anche cancellare a questo punto).
In genere per la gestione degli eventi si utilizzano classi interne anonime per comodità: ha poco senso creare una classe completa per poche righe di codice, in particolare se ne hai molte, tutte diverse.
Ti consiglierei di estrarre il codice di windowClosing in un metodo privato e richiamare quello.Originariamente inviato da Kneos
E il metodo che invece uso in overload per far fare la stessa cosa al bottone che richiamo cosi
codice:private void esciActionPerformed(java.awt.event.ActionEvent evt) { MioWindowAdapter uscita = new MioWindowAdapter(); uscita.windowClosing(this); }
Ad esempio:
codice:public class MioFrame extends JFrame { private JButton exitButton = new JButton("click to exit"); public MioFrame() { ... ... this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { askForExit(); } }); exitButton .addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { askForExit(); } }); ... ... } private void askForExit() { int userChoice = JOptionPane.showConfirmDialog(this, "Uscire da Orders Manager?", "Orders Manager - Esci", JOptionPane.OK_CANCEL_OPTION); if ( userChoice == JOptionPane.YES_OPTION ) { System.exit(0); } } }
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Tutto chiaro, in effetti avevo gia utilizzato questo tipo di dichiarazione per altri bottoni generati dinamicamente sull0interfaccia. Cio che non avevo collegato era il fatto che si tratta di un modo per estendere una classe e quindi ridefinirne i metodi senza per forza farlo con il classico extends
Logico infatti non estendere una classe come ho fatto io per gestire un evento quindi tutto quadra alla perfezione. Sono utilizzi e sfumatture che ancora non mi appartengono ma spero con il tempo.....
grazie mille!!! Buona serata!!!![]()
Di nulla, ciao![]()
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI