Re: addMouseListener
What you said you did seems to be correct. If you add the sprite to a
container or window the mouse events should propagate to your component
and the mouseClicked should be triggered. Could you show me a part of
your PlaneSprite and the part where the PlaneSprite is added to the
window/container.
Vincent, you are very kind. This is the code portion (don't blame me, this
is
my first Java program...I'm sure it is quite ugly...).
the class PlaneManager instantiate the PlaneSprite objects (where I added
the
mouse listener).
Ce
--------------------CODE START-----------------------
abstract class Sprite extends JPanel {
protected boolean visible; // is sprite visible
protected boolean active; // is sprite updateable
/* abstract methods */
abstract public void paint(Graphics g);
abstract public void update();
.... some other code here....
}
abstract class Sprite2D extends Sprite {
protected int locx;
protected int locy;
protected String tpId;
Color color;
boolean fill;
public boolean getFill() {
return fill;
}
....some other code here....
}
class PlaneSprite extends Sprite2D implements Moveable, MouseListener {
protected static final int planeDim = 10; // dimensions of circle
representing the plane
public PlaneSprite(int x, int y, Color c) {
locx = x;
locy = y;
tpId = planeName();
color = c;
fill = true;
addMouseListener(this);
restore(); // restore the sprite
}
/* provide implementation of abstract methods */
// FIXME
public void update() {// does nothing
}
/* check if sprite's visible before painting */
public void paint(Graphics g) {
if (visible) {
g.setColor(color);
if (fill) {
g.fillOval(locx, locy, planeDim, planeDim);
g.drawString(tpId, locx - 17, locy + 25);
} else {
g.drawOval(locx, locy, planeDim, planeDim);
g.drawString(tpId, locx - 17, locy + 25);
}
}
}
/************************************
Implements the methods for movement
*************************************/
... some code here ...
/* Define plane Name */
private String planeName() {
.... some code here ....
}
// Override the MouseListener methods
public void mouseClicked(MouseEvent e){
System.out.println("Click!!!!Plane");
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
}
class PlaneManager {
static int width, height; // applet dimensions
private PlaneSprite plane[];
static final int NUM_PLANES = 4;
int planeX, planeY; // Plane coordinates
int vplaneX, vplaneY; // Plane velocity
int maxVelocity = 1;
String planeID; // Plane name
public PlaneManager(int width, int height, Applet a) {
this.width = width;
this.height = height;
plane = new PlaneSprite[NUM_PLANES];
for (int i = 0; i < plane.length; i++) {
setDirections(width, height, maxVelocity);
if (jControlTower.debug >= 2) {
System.out.println(
"Plane - X:" + planeX + " Y:" + planeY + " VX: "
+ vplaneX + " VY: " + vplaneY);
}
plane[i] = new PlaneSprite(planeX, planeY, Color.gray);
plane[i].setVelocity(vplaneX, vplaneY);
}
}
.... some code here ....
}
--------------------CODE END-----------------------
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it