Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 26 su 26
  1. #21
    Utente di HTML.it L'avatar di Kneos
    Registrato dal
    Aug 2002
    Messaggi
    128
    No problema, grazie ancora per l'aiuto!

    alla prossima

  2. #22
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    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

  3. #23
    Utente di HTML.it L'avatar di Kneos
    Registrato dal
    Aug 2002
    Messaggi
    128
    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
    codice:
    class MioWindowAdapter extends java.awt.event.WindowAdapter
    se poi non istanzio addWindowListener(new MioWindowAdapter());

    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);
    }
    grazie dei consigli e abbi pazienza se ogni tanto mi sfugge qualcosa sono agli inizi

  4. #24
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente 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
    codice:
    class MioWindowAdapter extends java.awt.event.WindowAdapter
    se poi non istanzio addWindowListener(new MioWindowAdapter());
    La classe creata facendo

    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.



    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);
    }
    Ti consiglierei di estrarre il codice di windowClosing in un metodo privato e richiamare quello.
    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

  5. #25
    Utente di HTML.it L'avatar di Kneos
    Registrato dal
    Aug 2002
    Messaggi
    128
    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!!!

  6. #26
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.