Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中向对象传递指针位置_Java_Oop - Fatal编程技术网

在Java中向对象传递指针位置

在Java中向对象传递指针位置,java,oop,Java,Oop,我有一个名为Board的JPanel类,它有一个静态子类MouseHander,它沿着Board中相应的侦听器跟踪鼠标位置。我的Board类有pointerX和pointerY字段 如何将e.getX()和e.getY()从MouseHandler子类传递到它的超类JPanel?我尝试使用getter、setter、super,但无法获得子类和父类之间的数据传输。我肯定这是一个概念问题,但我被卡住了 谢谢 由于大众的需求,一些代码。这是一个没有任何通过提示的代码: public class Bo

我有一个名为Board的JPanel类,它有一个静态子类MouseHander,它沿着Board中相应的侦听器跟踪鼠标位置。我的Board类有pointerX和pointerY字段

如何将e.getX()和e.getY()从MouseHandler子类传递到它的超类JPanel?我尝试使用getter、setter、super,但无法获得子类和父类之间的数据传输。我肯定这是一个概念问题,但我被卡住了

谢谢

由于大众的需求,一些代码。这是一个没有任何通过提示的代码:

public class Board extends JPanel {


int x; // Mouse pointer fields.
int y;

public Board() {

            blah blah

    MouseHandler handler = new MouseHandler();
    addMouseMotionListener(handler);

}


static class MouseHandler implements MouseMotionListener {
    int pointerX;
    int pointerY;

    public void mouseMoved(MouseEvent e) {

             i'd like to do something like:
                 super.x = e.getX();
                 super.x = e.getY();

                 or

                 Board.setX() = e.getX(); // Missing setters below, this is just an example.
                 Board.setX() = e.getY();




    }

}

}这是因为类的静态实现没有看到您的jpanel实例。您可以通过传递对
MouseAdapter
(或
MouseListener
)的引用来执行此操作


这是因为类的静态实现没有看到jpanel实例。您可以通过传递对
MouseAdapter
(或
MouseListener
)的引用来执行此操作

简单。执行e.getSource()操作,该操作将为您提供事件发生的源。在你的情况下,这将是你的董事会类。只需将实例强制转换为一个Board实例,即可设置

public class Board extends JPanel {


int x; // Mouse pointer fields.
int y;

public Board() {

            blah blah

    MouseHandler handler = new MouseHandler();
    addMouseMotionListener(handler);

}


static class MouseHandler implements MouseMotionListener {
    int pointerX;
    int pointerY;

    public void mouseMoved(MouseEvent e) {
       Board b = (Board) e.getSource();
       b.setX(e.getX()); 
       b.setY(e.getY());
    }

}
}
简单。执行e.getSource()操作,该操作将为您提供事件发生的源。在你的情况下,这将是你的董事会类。只需将实例强制转换为一个Board实例,即可设置

public class Board extends JPanel {


int x; // Mouse pointer fields.
int y;

public Board() {

            blah blah

    MouseHandler handler = new MouseHandler();
    addMouseMotionListener(handler);

}


static class MouseHandler implements MouseMotionListener {
    int pointerX;
    int pointerY;

    public void mouseMoved(MouseEvent e) {
       Board b = (Board) e.getSource();
       b.setX(e.getX()); 
       b.setY(e.getY());
    }

}
}

这里有一条路。此技术使用对
MouseHandler
的外部类的隐式引用:

public class Board extends JPanel {

    public Board() {
        addMouseListener(new MouseHandler());
    }

    private void doSomething(int x, int y) {
        // ...
    }

    private final class MouseHandler extends MouseAdapter {
        public void mouseMoved(MouseEvent e) {
            Board.this.doSomething(e.getX(), e.getY());
        }        
    };
}

这里有一条路。此技术使用对
MouseHandler
的外部类的隐式引用:

public class Board extends JPanel {

    public Board() {
        addMouseListener(new MouseHandler());
    }

    private void doSomething(int x, int y) {
        // ...
    }

    private final class MouseHandler extends MouseAdapter {
        public void mouseMoved(MouseEvent e) {
            Board.this.doSomething(e.getX(), e.getY());
        }        
    };
}

你能发布相关代码吗?这将使回答您的问题变得更加容易。您有一个扩展JPanel的MouseHandler类!!??,嗯,也许你是指内部类…你能发布相关代码吗?这将使回答您的问题变得更加容易。您有一个扩展JPanel的MouseHandler类!!??,嗯,也许你指的是内部阶级。。。