无法为位于其他类

时间:2016-05-30 09:20:34

标签: java swing jframe mousemotionlistener

我正在创建一个简单的程序,可以在鼠标所在的位置绘制(显示)我的图像。因此图像随鼠标箭头移动。

为此,我创建了JFrame,并且我已经通过名为MouseMotionListener的类将ImageFrame添加到其中。使用imageComponent类添加图片。

MouseMotionListener我获取鼠标坐标但无法理解如何为x方法提供这些ypaintComponent坐标,以及每次移动鼠标时如何重新绘制它。这是我的代码:

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);
}
}

在上面的课程中,我宣布了xy:鼠标坐标。 我想从听众那里得到但却无法理解如何做到这一点。请有人帮忙!

修改 如果我将mouseMotionListener添加到imageComponent,那么它会出现this错误:

1 个答案:

答案 0 :(得分:1)

让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);
    }
}