gpt4 book ai didi

java - 重新画一个正方形?

转载 作者:行者123 更新时间:2023-12-04 06:16:12 25 4
gpt4 key购买 nike

我正在尝试使用此代码制作一个正方形,该正方形将在 y 轴上跟随您的鼠标。现在它只是在每次鼠标移动时制作一个新方块我将如何解决这个问题?

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.*;

public class Pong {
public static void main(String args[]) {
Frame f = new Frame("Pong");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.add(new PongField(Color.black), BorderLayout.CENTER);
f.setResizable(false);
f.pack();
f.setVisible(true);

}
}

class PongField extends Canvas {

boolean playing = true;
boolean running = true;

public PongField(Color mainscreen) {
setForeground(mainscreen);
}

public Dimension getPreferredSize() {
return new Dimension(600, 600);
}

public void paint(Graphics g) {
while (true) {
Dimension size = getSize();
PointerInfo a = MouseInfo.getPointerInfo();
Point b = a.getLocation();

a = MouseInfo.getPointerInfo();
b = a.getLocation();

int x = size.width / 2;
int y = (int) b.getY();

g.fillRect(x / x * 10, y, 10, 75);
g.drawLine(size.width / 2 - 5, 0, size.width / 2 - 5, size.height);

if (y != (int) b.getY())
y = (int) b.getY();
}
}
}

最佳答案

您不需要在paint() 中使用循环——事实上,这是一件非常可怕的事情,否则它会卡住整个GUI(没有其他组件能够自行绘制!) "循环出去,只留下循环体。然后通过添加 MouseMotionListener 来安排适当调用paint()那个叫 repaint() .在构造函数中,执行以下操作:

addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent me) {
repaint();
}
});

那应该这样做。现在每当鼠标移动时,paint() 将被调用。屏幕删除将自动为您处理。

关于java - 重新画一个正方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com