这是非常非常愚蠢的问题。我应该在单独的类中实现鼠标处理,因为我是一个完整的菜鸟,所以我有正确的方法这样做。
这是我的主applet类:
public class MmmuhApplet extends JApplet {
int x, y;
// stuff (...)
}
附加课程:
public class MouseProcessing implements MouseListener, MouseMotionListener{
@Override
public void mouseClicked(MouseEvent arg0) {
// I want to pass arg0.getX() to variable x. How?
}
// other methods (...)
}
我想到的唯一想法是在MouseProcessing类中存储对MmmuhApplet实例的引用,并通过所述引用从那里访问x / y。这是个好主意吗?
答案 0 :(得分:2)
"我想到的唯一想法是在MouseProcessing类中存储对MmmuhApplet实例的引用,并通过所述引用从那里访问x / y。这是个好主意吗?"
你有正确的想法。你可以做的是通过构造函数注入(或通过引用传递)将applet传递给监听器。然后为你需要的任何领域设置setter。像
这样的东西public class MmmuhApplet extends JApplet {
int x, y;
public void inti() {
addMouseListener(new MouseProcessing(MmmuhApplet.this));
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
}
public class MouseProcessing implements MouseListener {
private MmmuhApplet mmmuh;
public MouseProcessing(MmmuhApplet mmmuh) {
this.mmmuh = mmmuh;
}
public void mousePressed(MouseEvent e) {
Point p = e.getPoint();
mmmuh.setX(p.x);
mmmuh.setY(p.y);
}
}
答案 1 :(得分:1)
您可以使用以下方法向MouseListener
添加JApplet
:
public void addMouseListener(MouseListener l)
JApplet
从Component
继承此方法,如here所述。
我的建议是将MouseProcessing
课程作为内部课程安排到MmmuhApplet
,如下:
public class MmmuhApplet extends JApplet {
int x, y;
public MmmuhApplet(){
addMouseListener(new MouseProcessing());
}
// stuff (...)
private class MouseProcessing implements MouseListener, MouseMotionListener{
@Override
public void mouseClicked(MouseEvent arg0) {
// I want to pass arg0.getX() to variable x. How?
}
// other methods (...)
}
}