Java swing 画个图形跟随鼠标移动变大小

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);
			
			
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值