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没有反应,尝试使用重新绘制方法,而不是重新评估。我编辑了答案是的。这就解决了问题