您的位置:首页 > 科技 > 能源 > idea插件开发之通过纯编码方式开发页面(不使用form ui)

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

2024/11/19 10:44:07 来源:https://blog.csdn.net/wang0907/article/details/139632426  浏览:    关键词:idea插件开发之通过纯编码方式开发页面(不使用form ui)

写在前面

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

1:正戏

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

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中,源码如下:

/*** 通过该类可实现在工具栏显示(同maven在右侧的效果)*/
public class MyFactory implements ToolWindowFactory {@Overridepublic 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中:

<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"
}

运行:
在这里插入图片描述

写在后面

参考文章列表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com