将Papplet中的MouseClick事件传播到对象类

时间:2013-10-26 19:00:32

标签: java eclipse processing

所以,我正在使用eclipse和处理来在Java中进行一些较重的编码,但是我的派生类遇到了一些麻烦 -

我有一个直方图类,其成员变量parent是运行该程序的主要PApplet。处理已经有一个很好的MouseClicked事件,我希望我的直方图类能够拥有自己的onclicked方法。

所以这是一个很大的问题:如何让MouseClicked事件流入我的对象?

public RunOverview(PApplet p, float[] simBuckets, float[] pointBuckets, int xP, int yP, int len, int hi)
{
    this.parent = p;
    this.xPos = xP;
    this.yPos = yP;
    this.height = hi; 
 }
// SOMEHOW LISTEN FOR parent.MouseClicked()........

提前致谢!

1 个答案:

答案 0 :(得分:1)

现在,您的RunOverview类存储了对PApplet的引用。您也可以反过来让PApplet存储对RunOverview实例的引用!在构造函数中,您可以调用处理代码中定义的registerOverview(this)之类的函数,以将引用保存在PApplet中。然后,当调用鼠标函数时,您可以直接从那里调用RunOverview的函数!

public RunOverview(PApplet p, float[] simBuckets, float[] pointBuckets, int xP, int yP, int len, int hi)
{
    this.parent = p;
    this.xPos = xP;
    this.yPos = yP;
    this.height = hi; 
    p.registerOverview(this);
 }
 public void mousePressed(int x, int y){}
 public void mouseReleased(int x, int y){}

然后

RunOverview thingy;
void setup(){}
void draw(){}
void registerOverview(RunOverview view){
  thingy = view;
}
void mousePressed(){
  thingy.mousePressed(mouseX,mouseY);
}
void mouseReleased(){
  thingy.mouseReleased(mouseX,mouseY);
}

请确保在执行任何其他操作之前注册它,否则您将获得一些空指针异常。