Idea 插件开发: Swing Designer设计器创建的组件全部为空问题记录

问题现象

通过Swing 设计器创建的对象, Swing组件全部是空的, 导致ToolWindowFactory工厂的实现类调用时候出现了空指针异常
如下方式创建的
Idea 插件开发: Swing Designer设计器创建的组件全部为空问题记录_第1张图片

问题分析

问题出现时候, 同时给我生成了一个createUIComponents的私有方法, 由于个人当时理解有误, 把他当成了初始化方法, 在里面添加了一些代码, 运行时候会抛异常

    // 为什么会生成 createUIComponents 方法, 是因为, 修改组件时候, 不知道改错了什么位置, 被设识别成了自定义组件
    // 解决办法就是删除重新拖动组件, 自定义组件异常, 会印象swing designer生成其他组件, 导致其他组件也是空的
    private void createUIComponents() {
        // 异常代码
    }

为什么会出现这样的方法, 其实就是修改form文件时候, 导致误认为相关组件是自定义组件, 意思是我们自定义的组件需要在这个方法里面创建, 如果你的组件不是自定义组件, 可以删除掉, 重新拖动组件, 这样你的组件就不需要你自己使用这个私有方法完成初始化了

通过调式发现,只要你的组件不是自定义组件, 并且这个方法没有抛异常,
在访问组件(组件为空)时候就会自动初始化所有组件(猜测这里使用的是代理模式, 不是特别清楚这里的原理), 然后里面的ui对象都可以正常使用了

你可能感兴趣的:(gradle&idea,intellij-idea,ideal,plugin)