2012-12-16 58 views
1

我有一個類GuiApplication和一個類ImageHandler。 GUI可以與ImageHandler(以及圖像)一起工作,通過一個名爲Crawler的類來提供GUI可以使用的方法的外觀。如何在不創建實例的情況下訪問某個類中的特定組件/方法

有一個單獨的類StartUp它有一個主要方法,唯一做的就是創建一個GuiApplication(基本上它啓動程序)的實例。

在我的GUI中,有一個作爲記錄器的JTextPane:某些動作和事件將顯示在那裏。通過我的GUI中其他位置的輸出,我可以輕鬆更新其值。但是,當我的域類中有輸出時,例如ImageHandler,我什麼都做不了。

有一個Try-Catch塊可以防止我的程序崩潰,當一個意外的圖像URL通過我的閱讀器,當它發生時,我想在文本窗格中顯示(「Error:File xxx could not be read」) 。

但是,我沒有看到一個優雅的方式與我的GUI進行通信:我不能創建一個實例,因爲這將創建一個新的GUI,我不認爲接近我的GUI通過StartUp文件是好的也可以練習。

我正在考慮定義一個可以在整個項目中訪問的不同類中的變量,但我首先需要一些意見。

+0

聽起來像不良的外觀設計。根據Joop的回答,我會添加一個_checked_異常,並且我會考慮將GUI直接與ImageHandler進行接口 - 在包裝庫時,Facade很有用,您是否真的只需要一個類的包裝?你不應該定義一個全局變量,這是不好的做法。 – ignis

+0

目前還有一個類與方法有關連接到特定的網頁,我打算添加類似的東西,如VideoHandler,所以我相信一個façade是適當的眼睛附加功能。我會刷新我的例外,他們似乎是解決這個問題的方法。 –

回答

2

實際的方法是拋出一個RuntimeException,它不需要改變方法的簽名。在GUI中抓住它並做一個JOptionPane.showMessageDialog。

另一種方法是用事件處理程序擴展ImageHandler的API,並安裝一個消息處理程序,該程序在GuiApplication JOptionPane.showMessageDialog中調用。

+0

好的,我會研究這兩個選項! –

0

想到的一個選擇是回調:將某個接口的實例(可以是匿名類)傳遞給執行工作的方法,當發生錯誤時調用該方法。

相關問題