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

问题现象

通过Swing 设计器创建的对象, Swing组件全部是空的, 导致ToolWindowFactory工厂的实现类调用时候出现了空指针异常
如下方式创建的
在这里插入图片描述

问题分析

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

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

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

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

相关推荐

  1. idea 开发日志绑定问题

    2023-12-10 21:06:04       55 阅读
  2. IDEA 开发中一些好用

    2023-12-10 21:06:04       29 阅读
  3. 记录一个Qt调用问题

    2023-12-10 21:06:04       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-10 21:06:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-10 21:06:04       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-10 21:06:04       87 阅读
  4. Python语言-面向对象

    2023-12-10 21:06:04       96 阅读

热门阅读

  1. day 6

    2023-12-10 21:06:04       69 阅读
  2. C++中auto、decltype的用法

    2023-12-10 21:06:04       51 阅读
  3. 名称空间和作用域

    2023-12-10 21:06:04       61 阅读
  4. spring boot + uniapp 微信公众号 jsapi 支付

    2023-12-10 21:06:04       51 阅读
  5. TypeScript中泛型函数

    2023-12-10 21:06:04       68 阅读
  6. 秒杀业务

    2023-12-10 21:06:04       53 阅读
  7. Python计时器

    2023-12-10 21:06:04       57 阅读
  8. C51--OLED

    C51--OLED

    2023-12-10 21:06:04      45 阅读