idea插件开发之通过纯编码方式开发页面(不使用form ui)

写在前面

本文看线如何通过纯编码方式来定义页面。

1:正戏

我们首先来定义一个面板,需要继承抽象类:com.intellij.openapi.ui.SimpleToolWindowPanel,如下:

java 复制代码
public class MySelfDefinePanel extends SimpleToolWindowPanel {
    public MySelfDefinePanel(boolean vertical) {
        super(vertical);

        JLabel label = new JLabel("我是一个JLabel!", JLabel.CENTER);                               //创建指定文本的标签对象
        label.setIcon(new ImageIcon("C:\\Users\\15269\\Desktop\\自行车.png"));              //为标签添加图像
        label.setHorizontalTextPosition(JLabel.CENTER);                                    //设置文本相对于图像的水平位置
        label.setVerticalTextPosition(JLabel.BOTTOM);                                     //设置文本相对于图像的垂直位置
        label.setEnabled(false);                                                       	  //设置标签为不可用
//        label.setDisabledIcon(new ImageIcon("C:\\Users\\15269\\Desktop\\射箭.png"));      //设置标签在不可用的情况下显示的图像
        setContent(label);

    }
}

因为仅作为测试看效果,所以这里我们只是设置了一个简单的label,当然也可以写复杂的样式了,但是因为是纯编码方式,所以布局,样式等都要自己写代码了,定义完毕后就需要注册到factory中了,这里我们注册到侧边栏factory中,源码如下:

java 复制代码
/**
 * 通过该类可实现在工具栏显示(同maven在右侧的效果)
 */
public class MyFactory implements ToolWindowFactory {

    @Override
    public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
        // 获取内容工厂的实例
        ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();
        // 获取 ToolWindow 显示的内容
        Content content = contentFactory.createContent(new MySelfDefinePanel(false), "", false);
        // 设置 ToolWindow 显示的内容
        toolWindow.getContentManager().addContent(content);
    }
}

最后注册到plugin.xml中:

xml 复制代码
<extensions defaultExtensionNs="com.intellij">

    <toolWindow id="Read-Book" secondary="false" anchor="right"
                factoryClass="x.MyFactory"/>

</extensions>

为了避免中文乱码需要在build.gradle中配置如下信息:

复制代码
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

运行:

写在后面

参考文章列表

相关推荐
我的xiaodoujiao几秒前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 35--二次封装MySQL数据库连接操作
python·学习·测试工具·pytest
DechinPhy几秒前
使用Python免费合并PDF文件
开发语言·数据库·python·mysql·pdf
驾数者3 分钟前
Flink SQL自定义函数开发:标量、聚合、表值函数实现
python·sql·flink
qq_252614414 分钟前
python爬虫爬取视频
开发语言·爬虫·python
君莫愁。7 分钟前
【Unity】相机与UI的自适应
ui·unity·c#·游戏引擎
PNP Robotics8 分钟前
聚焦具身智能,PNP机器人展出力反馈遥操作,VR动作捕捉等方案,获得中国科研贡献奖
大数据·人工智能·python·学习·机器人
咸鱼加辣11 分钟前
【python面试】你x的启动?
开发语言·python
八月ouc11 分钟前
Python实战小游戏(二): 文字冒险游戏
数据结构·python·文字冒险
Blossom.11820 分钟前
多模态大模型实战:从零实现CLIP与电商跨模态检索系统
python·web安全·yolo·目标检测·机器学习·目标跟踪·开源软件
wasp52028 分钟前
AgentScope深入分析-设计模式与架构决策分分析
开发语言·python·agent·agentscope