lundi 13 avril 2015

Associating a MouseListener with a JComponent


Vote count:

0




My question here is that when the local class MouseClickListener calls the moveTo method of the comp object before we do: comp.addMouseListener(listener);, then why do the latter at all?



import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class Scratch {

public static void main(String[] args) {
JFrame frame = new JFrame("Moving Rectangle");
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final MyComponent comp = new MyComponent();
class MouseClickListener implements MouseListener {
public void mousePressed(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {
int x = event.getX();
int y = event.getY();
comp.moveTo(x, y);
}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
MouseListener listener = new MouseClickListener();
comp.addMouseListener(listener);
frame.add(comp);
frame.setVisible(true);
}
}

class MyComponent extends JComponent {

private Rectangle box;
public MyComponent() {
box = new Rectangle(0,0,50,50);
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.draw(box);
}
public void moveTo(int x, int y) {
box.setLocation(x,y);
repaint();
}
}


asked 9 secs ago







Associating a MouseListener with a JComponent

Aucun commentaire:

Enregistrer un commentaire