2015-08-27 125 views
1
Class foo 
{ 
    public void functionA() 
    // do stuff 
} 

class bar 
{ 
    private foo fooClass = new foo(); 

    private listener on foo.functionA() call 
    { 
     // do stuff 
    } 
} 

我想知道的是,如果這甚至是可能的。傾聽聽衆

我目前使用的是javafx,我有一個包含一堆圓柱體的組,當拖動一個圓柱體時,我想從上面的一個節點調用場景圖形中的一個函數。問題是我不確定氣缸將會出現多遠,所以調用.getParent()可能不是最佳的行動方案。

我正在考慮的主要事情是聽筒傾聽筒內事件的可能性。

我不確定這是否是最好的解釋,所以很抱歉,如果它是混亂。

基本上,我試圖編輯一個類,當一個監聽器被調用。我正在嘗試編輯的類可以訪問偵聽器類,但反之亦然。

+0

當'functionA'方法被調用時,你想執行一個動作嗎?或者當監聽器裏面的方法收到一個動作? –

+0

可能是這個問題可能會幫助http://stackoverflow.com/questions/12125870/how-to-create-a-listener-to-a-method-in-java –

+0

@JordiCastilla我想調用監聽器事件的功能被調用。 在這個例子中,我將它簡化爲一個函數,但實際上它是一個監聽器事件。 – jogden16761

回答

0

我通過將eventHandler發送到較低的對象偵聽器來解決了這個問題。

例子:

class foo 
{ 
    public void setListeners(EventHandler handler) 
    { 
     this.setListener(handler); 
    } 
} 

class bar 
{ 
    foo fooObject = new foo(); 

    EventHandler eventH = new eventhandler() 
    { 
     @override 
     public void handle(event args) 
     { 
      functionToDo(); 
     } 
    }; 

    private void functionToDo(){ do stuff } 

    // call in some method 
    { 
     fooObject.setListeners(eventH); 
    } 
} 

現在,當foo中的監聽器被調用(這可以通過多種方式來完成,但是我的項目是一個拖動動作),functionToDo將酒吧內調用。

我相信有更好的解決方法,但這對我有效。