我想知道當我在向窗體框架視圖添加偵聽器時嘗試關閉Java Swing應用程序時出現的問題。下面是如何產生我的問題:在Netbeans中,創建一個新的Swing應用程序項目,然後在主類中創建一個本地方法,通過this.getMainFrame()添加一個空鼠標監聽器到主窗口addMouseListener(new MouseAdapter() {})。進入窗體類,並在窗體的構造函數中使用.getApplication()。createListenerMethod()方法調用該方法,緊接在InitComponents()之後。添加鼠標偵聽器後,進程將不會關閉
運行程序,你會看到,關閉它後,netbean的小進度條表示,它仍在運行:(
我發現,如果我設置窗體的默認close操作「處置」,它解決了問題爲什麼如果我調用一個從表單到主應用程序類的方法來爲它自己添加一個監聽器呢?我之所以這樣來添加監聽器是因爲我想將主應用程序邏輯保存在main文件類,我感到不安編寫代碼在表單設計器分析類
是的,我的應用程序非常小,所以我很高興我不需要製作它已經不必要地複雜了。 InitComponents之後的代碼看起來對於向主應用程序添加調用非常安全,您還將如何與私有組件進行通信?或者,也許我想保留所有的邏輯表單? – chaz 2010-07-06 01:10:01
我不知道你在InitComponents中有什麼(在5年以上沒有使用過NetBeans)。一般來說,您嘗試在AbstractAction的後代中完成大部分簡短的工作。 SwingWorkers或您的框架提供的任何任務執行工具都需要長時間的工作。這兩個操縱(通常是定製的)小部件模型,但不要參考實際的小部件本身。 – ddimitrov 2010-07-06 03:34:21
InitComponents是設計師生成的,實際上它很好地包裝在評論符號中,所以你知道我在那裏做任何事情。所以像你說的添加動作監聽器是唯一一次在引用小部件時確保安全。實際上,我在窗體中設置了所有可以操作的動作偵聽器,以便他們可以在主類中調用面向動作的方法。即「searchCommitted」可以來自按下來自文本字段的輸入或者點擊按鈕。這幾乎是問題產生的原因。實際上,我發現默認關閉處理程序的默認值是「隱藏」表單。 – chaz 2010-07-07 14:58:08