问题现象
通过Swing 设计器创建的对象, Swing组件全部是空的, 导致ToolWindowFactory工厂的实现类调用时候出现了空指针异常
如下方式创建的
问题分析
问题出现时候, 同时给我生成了一个createUIComponents的私有方法, 由于个人当时理解有误, 把他当成了初始化方法, 在里面添加了一些代码, 运行时候会跑异常
// 为什么会生成 createUIComponents 方法, 是因为, 修改组件时候, 不知道改错了什么位置, 被设识别成了自定义组件// 解决办法就是删除重新拖动组件, 自定义组件异常, 会印象swing designer生成其他组件, 导致其他组件也是空的private void createUIComponents() {// 异常代码}
为什么会出现这样的方法, 其实就是修改form文件时候, 导致无任务相关组件是自定义组件, 意思是我们自定义的组件需要在这个方法里面创建, 如果你的组件不是自定义组件, 可以删除掉, 重新拖动组件, 这样你的组件就不需要你自己使用这个私有方法完成初始化了
通过调式发现,只要你的组件不是自定义组件, 并且这个方法没有抛异常,
在访问组件(组件为空)时候就会自动初始化所有组件(猜测这里使用的是代理模式, 不是特别清楚这里的原理), 然后里面的ui对象都可以正常使用了