Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Unire Paint e Gestione degli eventi in un unico Frame

    Io vorrei creare un frame al cui interno vorrei avere una gestione degli eventi tramite 1 bottone, e tramite il metodo Paint ereditato dalla classe Canvas vorrei disegnare un ovale quando premo il bottone...

    codice:
    //Classe per disegnare la figura
    public class CreatoreLabirinto extends Canvas
    {
        public void paint(Graphics g)
        {
            g.drawOval(10, 10, 5, 5);
    
        }
    }
    
    //Creazione del Frame con il bottoni
    class Pulsante extends Frame
    {
        Button pulsante1=new Button("pulsante1");
        public Pulsante()
        {
            setLayout(null);
            add(pulsante1);
            pulsante1.setBounds(10, 30, 60, 30);
            pulsante1.addActionListener(new asco1());
            setVisible(true);
        }
    }
    
    //Istanzia dell'oggetto con l'esecuzione del costruttore
    public static void main(String [] s)
        {
            new Pulsanti();
        }
    
    //Gestione dell'evento del bottone1 premuto
    class asco1 implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
                //Disegno dell'ovale con il metodo Paint...
            }
        }


    Però non riesco a inserire nello stesso Frame la gestione degli eventi fatta con l'ascoltatore ActionListener e il disegno delle figure con il metodo Paint...
    In che direzione mi devo muovere???Io ho pensato di creare con Swing 2 container: uno per la gestione degli eventi e uno per il disegno,ma non so come collegare le due cose...
    Come posso fare??? Grazie per qualsiasi aiuto

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Unire Paint e Gestione degli eventi in un unico Frame

    Originariamente inviato da RikiTheBest
    In che direzione mi devo muovere???Io ho pensato di creare con Swing 2 container: uno per la gestione degli eventi e uno per il disegno,ma non so come collegare le due cose...
    A parte il fatto che di Swing non stai usando nulla .... solo AWT, la questione è che il CreatoreLabirinto lo devi istanziare ... e poi aggiungere nel tuo frame. E puoi farlo a seguito del click sul pulsante. Ovviamente devi dare una posizione/dimensione al tuo CreatoreLabirinto e dopo che l'hai aggiunto nel frame devi chiedere il repaint().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    A parte il fatto che di Swing non stai usando nulla .... solo AWT, la questione è che il CreatoreLabirinto lo devi istanziare ... e poi aggiungere nel tuo frame. E puoi farlo a seguito del click sul pulsante. Ovviamente devi dare una posizione/dimensione al tuo CreatoreLabirinto e dopo che l'hai aggiunto nel frame devi chiedere il repaint().
    Con l'istanzia del CreatoreLabirinto tu intendi questo giusto?

    codice:
    class Pulsante extends Frame
    {
        Button pulsante1=new Button("pulsante1");
        public Pulsante()
        {
            CreatoreLabirinto CL=new CreatoreLabirinto();//Istanzia del CreatoreLabirinto
            setLayout(null);
            add(pulsante1);
            pulsante1.setBounds(10, 30, 60, 30);
            pulsante1.addActionListener(new asco1());
            setVisible(true);
        }
    }
    E questa istanzia va messa all'interno del Frame,poi dovrei fare questo giusto??
    codice:
    class asco1 implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
                repaint();
            }
        }
    E se è giusto, per dimensionare e posizionare il CreatoreLabirinto come posso fare??

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da RikiTheBest
    Con l'istanzia del CreatoreLabirinto tu intendi questo giusto?
    Allora ... la creazione dell'oggetto CreatoreLabirinto la puoi fare dove vuoi (cioè non è quello un grosso problema) .... già subito nel costruttore di Pulsante oppure nel actionPerformed().

    Se volevi che comparisse solo al click, allora solo a seguito dell'evento devi aggiungere il tuo componente nel frame e quindi fare il repaint.

    Se lo istanzi nel costruttore ma poi lo usi nel actionPerformed() chiaramente devi tenerti il reference come variabile di istanza .... come hai scritto tu, CL è locale e fuori dal costruttore ... non c'è!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.