2014-12-27 92 views
-1

所以我有兩個類:「Simulator」和「SimulationWindow」。 模擬器保存模擬器使用的所有方法和功能,並定義SimulationWindow的一個實例。將ActionListener與其他類中的方法連接起來

SimulationWindow生成GUI。在這個GUI中我有4個JButton。這些按鈕應該調用在Simulator中實現的方法。但是,我怎樣才能將按鈕連接到監聽器?

button1.addActionListener(???); 

我掙扎,因爲我的程序有一個主類,以啓動模擬器:

Simulator sim1 = new Simulator(); 

所以我有這個對象模擬器並不能創造一個又一個的SimulationWindow?

回答

1

將引用傳遞到你的模擬器到SimulationWindow的構造函數,並將其保存在一個領域有:

在模擬器:

class Simulator { 
    private final SimulationWindow window; 

    public Simulator() { 
     window = new SimulationWindow(this); 
    } 

    ... 
} 

在SimulationWindow:

class SimulationWindow extends JFrame { 
    private final Simulator sim; 

    public SimulationWindow(Simulator sim) { 
     this.sim = sim; 
    } 

    ... 
} 

然後你就可以訪問sim在SimulationWindow的實例中以及您在其中添加的ActionListeners中。

+0

爲我工作,謝謝! =) – da1m 2014-12-27 13:52:51

0

你可以在內部類(SimulationWindow)添加actionPerformed方法,並且對如何從內部類的上下文調用外部類(Simulator)方法來看看here

+0

我試過這個,得到「範圍內沒有可以訪問Simulator類型的封閉實例」 - 錯誤。 – da1m 2014-12-27 13:45:57

相關問題