問題現象
通過Swing 設計器創建的對象, Swing組件全部是空的, 導致ToolWindowFactory工廠的實現類調用時候出現了空指針異常
如下方式創建的
問題分析
問題出現時候, 同時給我生成了一個createUIComponents的私有方法, 由于個人當時理解有誤, 把他當成了初始化方法, 在里面添加了一些代碼, 運行時候會跑異常
// 為什么會生成 createUIComponents 方法, 是因為, 修改組件時候, 不知道改錯了什么位置, 被設識別成了自定義組件// 解決辦法就是刪除重新拖動組件, 自定義組件異常, 會印象swing designer生成其他組件, 導致其他組件也是空的private void createUIComponents() {// 異常代碼}
為什么會出現這樣的方法, 其實就是修改form文件時候, 導致無任務相關組件是自定義組件, 意思是我們自定義的組件需要在這個方法里面創建, 如果你的組件不是自定義組件, 可以刪除掉, 重新拖動組件, 這樣你的組件就不需要你自己使用這個私有方法完成初始化了
通過調式發現,只要你的組件不是自定義組件, 并且這個方法沒有拋異常,
在訪問組件(組件為空)時候就會自動初始化所有組件(猜測這里使用的是代理模式, 不是特別清楚這里的原理), 然后里面的ui對象都可以正常使用了