求助!java 画一个矩形,怎么样让这个白颜色的矩形跟随鼠标移动呢?(背景是非白色)

这是我用的笨方法,监听鼠标移动并重绘新的图形并覆盖旧图形颜色。另一种方法怎么弄?package auther.abbott;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Cursor;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Shape;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionListener;import java.awt.geom.Rectangle2D;import javax.swing.Icon;import javax.swing.JFrame;import javax.swing.JPanel;public class Game extends JFrame { /** * */ private static final long serialVersionUID = -7926796655555593301L; Container con; Shape rec; DrawPanel drawP; int x=0,y=0; int ox=0,oy=0; Boolean flag=false; Game(String title){ super(title); this.setBounds(500, 300, 240, 320); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); con = this.getContentPane(); drawP = new DrawPanel(); Icon icon; Cursor cursor = new Cursor(icon.paintIcon(this,, 30, 30)); this.setCursor(cursor); this.setBackground(Color.pink); con.add(drawP,BorderLayout.CENTER); drawP.addMouseMotionListener(new MouseMotionListener(){ @Override public void mouseDragged(MouseEvent arg0) { // TODO 自动生成的方法存根 } @Override public void mouseMoved(MouseEvent arg0) { // TODO 自动生成的方法存根 if(flag==true){ ox=x; oy=y; } x=arg0.getX(); y=arg0.getY(); drawP.repaint(); } }); } class DrawPanel extends JPanel{ /** * */ private static final long serialVersionUID = 6821779692499741237L; public void paint(Graphics g){ Graphics2D g2 = (Graphics2D)g; g2.setColor(Color.white); rec = new Rectangle2D.Double(x, y, 50, 50); g2.fill(rec); if(flag==true){ g2.setColor(Color.pink); g2.fill(new Rectangle2D.Double(ox, oy, 50, 50)); } flag=true; g2.setColor(Color.white); g2.fill(rec); } } }
2026年09月28日 05:02
有1个网友回答
网友(1):

我做过类似坦克大战的应用,重绘还有另一种写法就是页面隔一段时间刷新的方法。