Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[JAVA] dove inserisco l'ascoltatore?
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
ali7.p
Mortale devoto
Mortale devoto


Registrato: 06/07/06 15:15
Messaggi: 5

MessaggioInviato: 04 Set 2006 14:41    Oggetto: [JAVA] dove inserisco l'ascoltatore? Rispondi citando

ho un problemino...

Devo realizzare una GUI utilizzando le Swing in cui viene visualizzata un'auto in corrispondenza delle coordinate che individuano la posizione del mouse ognivolta che effettuo un click.
Io ho creato la GUI, ho creato il metodo che disegna l'auto, ho creato anche l'asoltatore... ma dove lo inserisco?!

ho provato a metterlo in tutti i punti, non riesco a farlo funzionare!!!!


Codice:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.geom.*;
 
class Auto extends JPanel{
    public static int x,y;

    public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2=(Graphics2D)g;
            g2.drawLine((x-10),(y-10),(x+10),(y-10) );
            g2.drawLine((x-10),(y-10),(x-20),y);
            g2.drawLine((x-20),y,(x-20),(y+10));
            g2.drawLine((x-20),(y+10),(x+30),(y+10));
            g2.drawLine((x+30),(y+10),(x+30),(y+5));
            g2.drawLine((x+30),(y+5),(x+10),(y-10));
            Area r1=new Area(new Ellipse2D.Double((x-10),(y+5),7,7));
            Area r2=new Area(new Ellipse2D.Double((x+15),(y+5),7,7));
            g2.fill(r1);
            g2.fill(r2);
        }
}
 

class AscPD extends  MouseAdapter {
    public void mouseClicked(MouseEvent e) {
            Auto.x=e.getX();
            Auto.y=e.getY();
    }
}
 
class VeicoliGUI extends JFrame {
    private Auto auto; 

       public VeicoliGUI(){
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            String s=getClass().getName();
            setTitle(s);
            setSize(600,400);
            setLayout(new BorderLayout());
             Container c=getContentPane();
            auto=new Auto();
            c.add(auto);
            setVisible(true);
    }

     public static void main (String[] args) {
           VeicoliGUI p=new VeicoliGUI();
    }
}
[/code]
Top
Profilo Invia messaggio privato
feanor981
Comune mortale
Comune mortale


Registrato: 02/11/06 21:39
Messaggi: 1

MessaggioInviato: 02 Nov 2006 21:57    Oggetto: Listeners Rispondi

1) Prima regola del bravo programmatore: RTFM. Nel caso di JAVA, RTF(Tutorial). Sezione Java Swing.

2) Per l'amor di Dio, chiama i listener con il loro nome. Non ascoltatori. Ti prego. Inoltre, i listener si "registrano" non "inseriscono".

3) Si chiamano listener perché sono in "ascolto" per eventi. Per sapere cosa devono "ascoltare", bisogna come dicevo registrarli.
In pratica, la tua sottoclasse di JPanel deve fare qualcosa tipo addMouseListener( istanza_di_AscPD ); (mi pare: controlla la guida di Java, non sto facendo la prova e potrei ricordare male. Il concetto è corretto, il nome del metodo non necessariamente).

4) Senti, scusa se mi irrito, però come cacchio hai scritto sta classe Auto? Che cacchio rappresentano i due campi public static? Prima di tutto leva lo static che non ha veramente nessun senso, poi per favore leva public che manda a puttane l'incapsulamento, mettici due metodi di accesso (setx()/getX() e setY()/getY() per esempio), indi modifica AscPD e dagli nel costruttore un riferimento alla classe che deve controllare, cioè nel tuo caso Auto, così può invocare i suddetti metodi di accesso per modificare X ed Y.

5) Infine, non sono sicuro che così funzioni: controlla come viene effettuato il repaint dei componenti per assicurartene. Forse devi richiamarlo tu esplicitamente.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi