2011-02-27 53 views
0

我正在編寫一個類似於MS Excel的客戶端應用程序 - 它有一個菜單欄,並且您有幾個內部框架,每個框架都是一個文件,處於幾個狀態之一。(SWING)菜單欄的動作和狀態保持

基本的流程是這樣的:打開文件後,你可以點擊構建,構建完成後你可以導出/保存(其他場景更復雜)。

我感興趣的是如何在每次幀之間切換時更改菜單按鈕的狀態:如果尚未按下「構建」,則應禁用「導出」,但如果您切換到已經按下「構建」按鈕並已構建好的窗口,應該啓用「導出」按鈕。

是否有處理這樣的事情的設計模式?任何最好的已知方法?

回答

1

Add an InternalFrameListener到您創建的每個內部框架,並偵聽internalFrameActivated事件。該事件包含已被激活的幀。詢問這個內部框架的狀態,知道它是否已經構建,並相應地啓用/禁用菜單項。

+0

謝謝!你如何建議從內部框架訪問MenuBar?它應該是一個單身人士嗎? – Yossale

+0

我不認爲你應該從內部框架訪問菜單欄。在創建菜單欄的主類中,應該將InternalFrameListener定義爲實例變量。這個類還應該包含負責創建和添加新內部框架的方法(從打開文件的菜單操作中調用)。而且這個createFrame方法應該在它創建的內部框架上添加內部框架監聽器。 –