可见JComponents我试图代码,主要是用于以示范一个简单的Java应用程序,但它不会出于某种原因。它的主要功能是基本跟踪鼠标的移动,并在鼠标所在的位置绘制一个框。我一直在研究一些代码,这就是我所拥有的。难道我做错了什么?图纸上的MouseEvent
这是主类
package peter;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.MouseInfo;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Frame extends JPanel implements MouseMotionListener {
private final static JFrame window = new JFrame();
public Frame(){
addMouseMotionListener(this);
setPreferredSize(new Dimension(450, 450));
setBackground(Color.GREEN);
}
private static int mouseX;
private static int mouseY;
public static void main(String[] args){
//Create and set up the window.
JFrame frame = new JFrame("MouseMotionEventDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
JComponent newContentPane = new Frame();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
@Override
public void mouseDragged(MouseEvent e)
{
;
}
@Override
public void mouseMoved(MouseEvent e)
{
JComponent P = new Paintings();
window.add(P);
System.out.println("Mouse moved");
}
public static int getMouseY()
{
return MouseInfo.getPointerInfo().getLocation().y;
}
public static int getMouseX()
{
return MouseInfo.getPointerInfo().getLocation().x;
}
public static Rectangle rectOnMouse()
{
Rectangle rect = new Rectangle(getMouseX(), getMouseY(), 10,10);
return rect;
}
}
这是绘画类
package peter;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
public class Paintings extends JComponent{
public void paintComponent(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.draw(Frame.rectOnMouse());
}
}
你的 'getMouseX()' 将返回 'Y'。 – leeor
我更新了代码以解决此问题。感谢您的输入 –
在您做出大量不正确的假设时阅读教程。对于你重复创作和添加绘画对象是错误的。为什么要重复组件? –