Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    31

    [JAVA] La GUI che genero non si chiude.

    Ciao a tutti,
    ho un piccolo problema e sicuramente mi sfugge qualche banalità.
    Le tre classi mostrate sotto, generano una semplice GUI con un tasto che quando premuto viene mostrata una label sempre all'interno della GUI stessa. Non ottengo nessun errore ma quando provo a chiudere la GUI questa non nè vuole sapere.

    Grazie
    ciao

    P.S.: chiedo scusa al moderatore ALKA che mi ha chiuso il post precedente per mia negligenza, prometto che ciò non accadrà più.

    Di seguito il codice delle tre classi:
    -----------------------------------------------------------------------------------
    prima classe:
    -----------------------------------------------------------------------------------
    public class EseGestEveClassiAnonime
    {
    public static void main(String[] args)
    {
    ModelloDelegazioneAnonimo model=new ModelloDelegazioneAnonimo();
    ChiudGui ch=new ChiudGui();
    model.setup();
    ch.chiudi();
    }
    }

    -------------------------------------------------------------------------------------
    seconda clsse:
    -------------------------------------------------------------------------------------
    import java.awt.*;
    import java.awt.event.*;

    public class ModelloDelegazioneAnonimo
    {
    private Frame fr;
    private Button butt;
    private Label l;

    public ModelloDelegazioneAnonimo()
    {
    fr=new Frame("Modello delegazione anonimo");
    butt=new Button("Premi questo tasto");
    l=new Label();
    }

    public void setup()
    {
    butt.addActionListener(new ActionListener()
    {
    private int counter;
    public void actionPerformed(ActionEvent e)
    {
    l.setText(e.getActionCommand()+"-"+(++counter));
    }
    });

    fr.add(butt,BorderLayout.SOUTH);
    fr.add(l);
    fr.pack();
    fr.setVisible(true);
    }

    public Frame get()
    {
    return fr;
    }
    }

    --------------------------------------------------------------------------------
    terza classe:
    --------------------------------------------------------------------------------
    import java.awt.*;
    import java.awt.event.*;

    public class ChiudGui extends ModelloDelegazioneAnonimo
    {
    private Frame frame;
    public ChiudGui()
    {
    frame=this.get();
    }

    public void chiudi()
    {
    frame.addWindowListener(new WindowListener()
    {
    public void windowClosing (WindowEvent ev)
    {
    System.exit(0);
    }
    public void windowClosed (WindowEvent ev) {}
    public void windowOpened (WindowEvent ev) {}
    public void windowActivated (WindowEvent ev) {}
    public void windowDeactivated (WindowEvent ev) {}
    public void windowIconified (WindowEvent ev) {}
    public void windowDeiconified (WindowEvent ev) {}
    });
    }
    }
    ---------------------------------------------------------------------------------

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Perchè tu tenti di chiudere (e si chiude!!) una finestra che non hai mai "aperto" (o meglio, non l'hai mai visualizzata).

    Tu hai creato 2 oggetti:
    1) ModelloDelegazioneAnonimo (che è una finestra, quella che vedi!!)
    2) ChiudGui (che in realtà ha una finestra nulla)

    Tu chiami il metodo chiudi() sulla seconda (giustamente... la prima non ce l'ha).

    Io ti consiglio di cambiare completamente metodo di programmazione: è inutile creare tante classi per niente, puoi fare tutto con una sola. Un'unica classe che estende Frame. La seconda (ChiudGui) non serve proprio a nessuno.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Originariamente inviato da LeleFT
    Io ti consiglio di cambiare completamente metodo di programmazione: è inutile creare tante classi per niente, puoi fare tutto con una sola. Un'unica classe che estende Frame. La seconda (ChiudGui) non serve proprio a nessuno.

    Ciao.
    Effettivamente con questo modo di programmare appena ti capita di fare qualcosa di un po' più complesso ti ritrovi con 50 classi e la cosa non è proprio il massimo...è uno spreco inutile

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

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 © 2025 vBulletin Solutions, Inc. All rights reserved.