gpt4 book ai didi

java - 按下鼠标时如何绘制蓝色矩形?

转载 作者:行者123 更新时间:2023-11-30 10:23:15 24 4
gpt4 key购买 nike

这是我的代码。我想在按下鼠标时绘制一个蓝色矩形。该矩形将以鼠标指针为中心。我对事件一窍不通,因此非常感谢您的帮助和解释。

import javax.swing.*; 
import java.awt.*;
import java.awt.event.*;

class MouseDemo extends JPanel implements MouseListener {
int x, y; // location of mouse
int sx=25, sy=25; // size of shape
JFrame frame;

void buildIt() {
frame = new JFrame("MouseDemo");
frame.add( this );
this.x = 150;
this.y = 150;
this.addMouseListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocation(200, 200);
frame.setVisible(true);
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor( Color.blue );
g.fillRect(x - sx/2, y - sy/2, sx, sy);
}

// the method from MouseListener we're interested in this time
@Override
public void mousePressed( MouseEvent e) {
e.getX();
e.getY();
}

// the other four methods from MouseListener
// we don't use them, but they have to be present
@Override public void mouseReleased( MouseEvent e) { }
@Override public void mouseClicked( MouseEvent e) { }
@Override public void mouseEntered( MouseEvent e) { }
@Override public void mouseExited( MouseEvent e) { }

public static void main(String[] args) {
new MouseDemo().buildIt();
}
}

最佳答案

将你的方法修改为:

 // the method from MouseListener we're interested in this time
@Override
public void mousePressed( MouseEvent e) {
this.x = e.getX();
this.y = e.getY();
this.repaint();
}

您的代码在默认点 (150, 150) 处绘制带有正方形的 Jpanel。随着编辑。您将默认值 (150, 150) 更改为您鼠标所在的坐标,然后告诉 JPanel 它应该重新绘制自己,这将调用 paintComponent 方法来绘制鼠标位置处的正方形。

关于java - 按下鼠标时如何绘制蓝色矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47116523/

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