小弟是菜鸟,自学java,现在有个问题一直解决不了,求各位高手帮助!我已经画好了一个矩形,如何能实现用鼠标拖动到面板上的任意位置呢?
import java.awt.*;
import java.awt.event.*;
public class JX extends Frame {
public void paint(Graphics g){
g.drawRect(50,50,100,100);
}
public static void main (String[] args) {
JX p = new JX();
p.setSize(400,400);
p.setVisible(true);
p.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
import java.awt.*;
import java.awt.event.*;
public class JX extends Frame {
public void paint(Graphics g){
g.drawRect(50,50,100,100);
}
public static void main (String[] args) {
JX p = new JX();
p.setSize(400,400);
p.setVisible(true);
p.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class MoveRectangle extends Frame implements MouseMotionListener,MouseListener { private static final int WIDTH = 20;
private static final int HEIGHT = 30; private int x, y;
private boolean canMove;
private int dX, dY; public static void main(String[] args) {
// TODO Auto-generated method stub
new MoveRectangle().setVisible(true); } public MoveRectangle() {
x = 100;
y = 150;
canMove = false;
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
this.addMouseMotionListener(this);
this.addMouseListener(this);
this.setSize(400, 300);
} @Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
Color c = g.getColor();
g.setColor(this.getBackground());
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(new Color(255, 0, 0));
g.drawRect(x, y, WIDTH, HEIGHT);
g.setColor(c);
} @Override
public void mouseDragged(MouseEvent me) {
// TODO Auto-generated method stub
if (canMove) {
int mX = me.getX();
int mY = me.getY();
x = mX - dX;
y = mY - dY;
//repaint();
paint(this.getGraphics());
}
}
@Override
public void mousePressed(MouseEvent me) {
// TODO Auto-generated method stub
if (me.getButton() == MouseEvent.BUTTON1) {
int mX = me.getX();
int mY = me.getY();
if (mX >= x && mX <= x + WIDTH && mY >= y && mY <= y + HEIGHT) {
dX = mX - x;
dY = mY - y;
canMove = true;
}
}
} @Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
canMove = false;
} @Override
public void mouseMoved(MouseEvent me) {
} @Override
public void mouseClicked(MouseEvent arg0) {
} @Override
public void mouseEntered(MouseEvent arg0) {
} @Override
public void mouseExited(MouseEvent arg0) {
}}