Yazdığım bir MouseMotionListener
için JPanel
Ama nasıl kullanılacağı konusunda kafam karıştı.
Dinleyici sınıfı, çerçeveye eklendiğinde iyi çalışır aWindow.add(new MouseMotionEvents())
ancak bunu kullanarak panele eklemeye çalıştığımda content.add(new MouseMotionEvents())
işe yaramıyor. Salıncakta yeniyim ve JComponent
s, biri bana bazı ipuçları verebilir mi?
public class test {
public static void main(String[] args) {
JFrame aWindow = new JFrame();
aWindow.setBounds(600, 600, 600, 600);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = new JPanel();
content.add(new MouseMotionEvents());
aWindow.add(content);
aWindow.setVisible(true);
}
}
class MouseMotionEvents extends JPanel implements MouseListener,
MouseMotionListener {
Point p;
Point r;
public MouseMotionEvents() {
addMouseListener(this);
addMouseMotionListener(this);
}
public void mouseClicked(MouseEvent me) {
// p = me.getPoint();
// repaint();
}
public void mouseEntered(MouseEvent me) {
}
public void mouseExited(MouseEvent me) {
}
public void mousePressed(MouseEvent me) {
p = me.getPoint();
// repaint();
}
public void mouseReleased(MouseEvent me) {
r = me.getPoint();
repaint();
}
public void mouseDragged(MouseEvent me) {
r = me.getPoint();
repaint();
}
public void mouseMoved(MouseEvent me) {
}
public void paint(Graphics g) {
if (p != null && r != null) {
Dimension d = getSize();
int xc = d.width / 2;
int yc = d.height / 2;
if(p.getX()-r.getX()>0 && p.getY()-r.getY()>0){
g.drawRect((int)p.getX(), (int)p.getY(), (int)(p.getX()-r.getX()), (int)(p.getY()-r.getY()));
}
if(p.getX()-r.getX()>0 && p.getY()-r.getY()<0){
g.drawRect((int)p.getX(), (int)p.getY(), (int)(p.getX()-r.getX()), (int)(-p.getY()+r.getY()));
}
if(p.getX()-r.getX()<0 && p.getY()-r.getY()>0){
g.drawRect((int)p.getX(), (int)p.getY(), (int)(-p.getX()+r.getX()), (int)(p.getY()-r.getY()));
}
if(p.getX()-r.getX()<0 && p.getY()-r.getY()<0){
g.drawRect((int)p.getX(), (int)p.getY(), (int)(-p.getX()+r.getX()), (int)(-p.getY()+r.getY()));
}
}
}
}