我正在创建一个简单的程序,无论鼠标位于何处都可以绘制(显示)图像。因此图像随鼠标箭头移动。
为此,我创建了一个JFrame
,并通过名为MouseMotionListener
的类向其中添加了Image
和Frame
。使用imageComponent
类添加图像。
在MouseMotionListener
中,我获取了鼠标坐标,但不明白如何为x
方法提供这些y
和paintComponent
坐标,以及每次移动鼠标时如何重新绘制它。码:main()
类中的Practice
方法:
public class Practice {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
public void run(){
JFrame frame = new Frame();
frame.setSize(500,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}
Frame
类,它将侦听器和ImageComponent
添加到框架。class Frame extends JFrame{
Frame(){
add(new imageComponent());
addMouseMotionListener(new MouseAdapter(){
public void mouseMoved(MouseEvent me){
int x = me.getX();
int y = me.getY();
repaint();
}
});
}
}
imageComponent
类,它从指定路径绘制图像:class imageComponent extends JComponent{
Image img;
int x,y;
imageComponent(){
img = new ImageIcon("C:\\Users\\Kaushal28\\Desktop\\image.png").getImage();
}
public void paint(Graphics g){
g.drawImage(img, x, y, null);
}
}
在上面的类中,我声明了
x
和y
:鼠标坐标。我想从听众那里得到,但不知道该怎么做。请有人帮忙!
编辑:
如果我将
mouseMotionListener
添加到imageComponent
,则给出this错误: 最佳答案
让imageComponent添加鼠标侦听器:
class imageComponent extends JComponent {
Image img;
int x, y;
imageComponent() {
addMouseMotionListener(new MouseAdapter() {
public void mouseMoved(MouseEvent me) {
x = me.getX();
y = me.getY();
repaint();
}
});
img = new ImageIcon(/* path to image */).getImage();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, x, y, null);
}
}