62,623
社区成员
发帖
与我相关
我的任务
分享
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
public class RectDragged extends JPanel {
private Rectangle2D rect1;
private Rectangle2D rect2;
private boolean mouseInRect1 = false;
private boolean mouseInRect2 = false;
public RectDragged() {
rect1 = new Rectangle2D.Float(20, 20, 8, 8);
rect2 = new Rectangle2D.Float(60, 20, 8, 8);
this.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (rect1.contains(e.getPoint())) {
mouseInRect1 = true;
} else if (rect2.contains(e.getPoint())) {
mouseInRect2 = true;
}
}
@Override
public void mouseReleased(MouseEvent e) {
mouseInRect1 = false;
mouseInRect2 = false;
}
});
this.addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
if (mouseInRect1) {
rect1.setFrame(e.getX(), e.getY(), rect1.getWidth(), rect1
.getHeight());
RectDragged.this.repaint();
}
if (mouseInRect2) {
rect2.setFrame(e.getX(), e.getY(), rect2.getWidth(), rect2
.getHeight());
RectDragged.this.repaint();
}
}
});
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
g2d.fill(rect1);
g2d.setColor(Color.GREEN);
g2d.fill(rect2);
}
private static void createGUIAndShow() {
JFrame frame = new JFrame();
RectDragged rd = new RectDragged();
frame.getContentPane().add(rd);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
RectDragged.createGUIAndShow();
}
});
}
}