2013-10-26 43 views
1

所以,我使用的Eclipse和處理做了一些Java中的重編碼,但我有我的一個小麻煩衍生classes--傳播MouseClick事件對象類

我有一個直方圖類與成員變量父母是運行該程序的主要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

現在您的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); 
} 

只要確保你做任何事情之前進行註冊,否則你會得到一些空指針異常。