Java 按下鼠标时,如何绘制蓝色矩形?
这是我的密码。我想在按下鼠标时画一个蓝色的矩形。矩形将以鼠标指针为中心。我是活动的不速之客,所以我希望得到帮助和解释Java 按下鼠标时,如何绘制蓝色矩形?,java,swing,Java,Swing,这是我的密码。我想在按下鼠标时画一个蓝色的矩形。矩形将以鼠标指针为中心。我是活动的不速之客,所以我希望得到帮助和解释 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; //
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();
}
您的代码使用默认点(150150)处的正方形绘制
Jpanel
。与编辑。将默认值(150、150)更改为鼠标的坐标,然后告诉JPanel
它应该重新绘制自己将调用的paintComponent
方法,该方法将在鼠标位置绘制正方形。你能解释一下你的代码现在在做什么吗?如果你有任何错误…现在,它只是在左上角显示一个蓝色正方形的JFrame。而且对滑鼠没有反应。没问题,谢谢。只是添加repaint()的问题。没有任何更改。我只是得到一个左上角有一个蓝色矩形的JFrame,对mouseHm没有反应,尝试使用重新绘制方法,而不是重新评估。我编辑了答案是的。这就解决了问题