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