gpt4 book ai didi

java - 如何让paintComponent跟随鼠标移动?

转载 作者:行者123 更新时间:2023-12-01 10:43:09 24 4
gpt4 key购买 nike

以下是我所拥有的,我在一个类中有一个paintComponent方法,

public void paintComponent(Graphics g) {
g2.setPaint(Color.red);
g2.fillRect(100, 100, 50, 50);
}

我想让那个图形对象(上面)在第二个类中跟随我的鼠标,但我不知道如何在我的第二个类(下面)中调用它,我编写了第一个类的构造函数,但我不知道不知道如何让它显示在我的框架上。附:我将 mouseMotionListener 添加到我的框架

public void mouseMoved(MouseEvent e) {
GOLDraw g1 = new GOLDraw();//default constructor from the first class
repaint();
}

请简单解释一下如何调用paintComponent方法,以及为什么(我会尝试理解它,我对继承等不太了解)。可能因为我是一个初学者,而且我做错了,所以在阅读了 api 和 google 几个小时后我什么也没找到。

public class GolPresets extends JComponent implements MouseMotionListener{  


public GolPresets() {

}

@Override
public void mouseDragged(MouseEvent e) {

}

Point point;
@Override
public void mouseMoved(MouseEvent e){
point = e.getPoint();
}


public void paintComponent(Graphics g) {
g.drawRect(point.x, point.y, 100, 100);
}

public void GUI() {
JFrame frame = new JFrame("");
frame.setVisible(true);
frame.setSize(500, 500);
frame.add(new GolPresets());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new GolPresets());
frame.addMouseMotionListener(this);

}

public static void main(String[] args) {
GolPresets g = new GolPresets();
g.GUI();
}

}

最佳答案

例如:

Point lastCursorPoint;

public void mouseMoved(MouseEvent e) {
lastCursorPoint = e.getPoint();
repaint();
}

public void paintComponent(Graphics g) {
if (lastCursorPoint != null) {
g2.setPaint(Color.red);
g2.fillRect(lastCursorPoint.x, lastCursorPoint.y, 50, 50);
}
}

关于java - 如何让paintComponent跟随鼠标移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344378/

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