import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
public class TestB extends JFrame{
TestB(){
super("画个图形跟随鼠标移动变大小");
setBounds(500, 200, 600, 800);
setDefaultCloseOperation(EXIT_ON_CLOSE);
PanelB panle = new PanelB();
add(panle);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(()->{
new TestB().setVisible(true);
});
}
private class PanelB extends JPanel {
Ellipse2D.Double circle;
PanelB(){
// 初始化圆形,设置默认位置和大小
circle = new Ellipse2D.Double(10, 10, 80, 80);
移动(this);
}
public void 移动(PanelB panel) {
panel.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
int x = e.getX();
int y =e.getY();
circle.setFrame(50,50,x-25, y-25);
repaint();
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
Graphics2D g2 =(Graphics2D)g;
//circle = new Ellipse2D.Double(10, 10, 80, 80);
// 其中 (10, 10) 是左上角坐标,80×80 是正方形边界
g2.setColor(Color.RED);
g2.fill(circle);
}
}
}