我有一个名为 Board 的 JPanel 类,它有一个静态子类 MouseHanlder,它沿着 Board 中的相应监听器跟踪鼠标位置。我的 Board 类有字段pointerX 和pointerY。
如何将 e.getX() 和 e.getY() 从 MouseHandler 子类传递到其父类(super class) JPanel?我尝试了getters、setters、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
)的引用来实现
class MyPanel extends JPanel
{
MyPanel()
{
item.addMouseListener(new MyListener(this));
}
void pass(int x, int y)
{
//whatever
}
class MyListener extends MouseAdapter
{
MyPanel ref;
MyListener(MyPanel ref)
{
this.ref = ref;
}
public void mousePressed(MouseEvent e)
{
ref.pass(e.getX(), e.getY());
}
}
}
关于java - 将指针位置传递给 Java 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2496798/