Precedente :: Successivo |
Autore |
Messaggio |
ali7.p Mortale devoto
Registrato: 06/07/06 15:15 Messaggi: 5
|
Inviato: 04 Set 2006 14:41 Oggetto: [JAVA] dove inserisco l'ascoltatore? |
|
|
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 |
|
|
feanor981 Comune mortale
Registrato: 02/11/06 21:39 Messaggi: 1
|
Inviato: 02 Nov 2006 21:57 Oggetto: Listeners |
|
|
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 |
|
|
|
|
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
|
|