IntelliJIDE插件开发(二)UI界面与数据持久化在上一篇文章中介绍了在IDEA下开发运行和安装插件

创建完成后,会出现类似下图的界面:

可以看到,默认会创建一个Java类和一个form布局文件,其中Java文件主要用于后续控制字段的初始化及获取等操作,form文件则用于界面布局,点击form文件会出现上图所示的三个栏目:组件属性栏、UI效果栏和组件栏,其中先选中右侧组件然后就可以拖拽到中间的UI效果栏展示。

修改Label的内容可以通过左侧工具栏或者直接在UI效果栏双击标签进行:

输入框对应的字段名则通过左侧组件属性栏进行修改:

这时候我们查看UIDemo.java文件会发现以下内容(注释随自己的配置变化):

importjavax.swing.*;/***UI界面**@authorbutterfly*@date2023-12-06*/publicclassUIDemo{privateJTextFieldusername;privateJTextFieldpassword;}然后通过预览功能,我们也可以先查看表单效果:

简单的使用步骤就到这里,这里就不挨个讲解组件的效果和使用方式了,后续会在使用的过程和实战应用中再进行讲解,大家也可以先自行探索。

在上一小节中我们讲解了如何通过UIDesigner插件来创建我们的UI界面,可以发现默认提供的SwingUI组件并没有办法满足我们的日常使用,比如文件下拉树选择组件就不存在。而我们对Swing的开发又不熟悉,那该怎么办呢?还好,我们还可以使用IntelliJ平台自带的组件,下面就来讲解使用方法:

首先在空白处右键创建一个分组:

然后右键分组选择第一项添加组件:

选择类名的方式,然后点击...:

这里输入TextFieldWithBrowseButton即可找到带有文件下拉树选择输入框:

然后经过两次确认就可以发现组件已经添加到了右侧组件栏中:

由于UIDesigner的预览功能不支持原生组件的预览,需要运行插件才可以,这里先知道是类似下图选择文件夹的效果即可:

以Git插件为例,布局如下:

根据插件界面可以发现第一行就是使用带有文件树选择的输入框,我们在代码中也可以找到对应实现:

由于192版本之后使用Kotlin进行UI的编写,因此初学建议可以下载一个192的IDEA社区版进行界面的参考,这样通过参考布局及相应源码也是快速学习UI界面开发的一种方法。

至于如何快速找到插件的某个组件实现,这里建议在下载源码后,就可以根据界面上的提示文字进行代码的全局搜索即可。

通过上述两步,我们可以了解到如何实现开发一个简单的UI界面,下面就开始讲解如何将设计好的界面展示在配置页面或者侧边栏中。

在正式开始之前我们需要对上文中创建的界面进行一些修改,布局外层的Panel需要先设置一下字段名:

然后增加相应的Get方法:

importjavax.swing.*;/***UI界面**@authorbutterfly*@date2023-12-06*/publicclassUIDemo{privateJTextFieldusername;privateJTextFieldpassword;privateJPanelmainPanel;publicJPanelgetMainPanel(){returnmainPanel;}}准备工作到此结束。

接下来就是将UI展示在配置界面,我们先创建一个UISettingsConfig.kt文件:

importcn.butterfly.ui.UIDemoimportcom.intellij.openapi.options.Configurableimportjavax.swing.JComponent/***UI配置界面配置类**@authorbutterfly*@date2023-12-06*/classUISettingsConfig:Configurable{privatevalform=UIDemo()privatevalcomponent:JComponentinit{component=form.mainPanel}overridefuncreateComponent()=componentoverridefunisModified()=trueoverridefunapply(){}overridefungetDisplayName()="UISettingsConfig"}然后在plugin.xml文件中进行如下的配置,这里的applicationConfigurable代表使用应用级别的配置,相应地,还有projectConfigurable代表项目级别的配置,具体区别在下文的数据持久化中进行介绍:

如果想要修改其显示位置,比如显示在Tools菜单下:

只需要在配置中增加parentId="tools"即可:

最后再来说明如何在侧边栏中显示界面,首先创建一个UISidebarConfig.kt:

importcn.butterfly.ui.UIDemoimportcom.intellij.openapi.project.Projectimportcom.intellij.openapi.wm.ToolWindowimportcom.intellij.openapi.wm.ToolWindowFactoryimportcom.intellij.ui.content.ContentFactoryimportjavax.swing.JComponent/***UI侧边栏界面配置类**@authorbutterfly*@date2023-12-06*/classUISidebarConfig:ToolWindowFactory{privatevalform=UIDemo()privatevalcomponent:JComponentinit{component=form.mainPanel}overridefuncreateToolWindowContent(project:Project,toolWindow:ToolWindow){toolWindow.contentManager.addContent(ContentFactory.getInstance().createContent(component,"",false))}}然后我们可以准备一个svg图标文件用于后续在侧边栏展示:

同时需要创建对应的文件加载接口:

importcom.intellij.openapi.util.IconLoader;importjavax.swing.*;/***插件图标**@authorbutterfly*@date2023-12-06*/publicinterfacePluginIcons{IconBUTTERFLY=IconLoader.getIcon("/icons/butterfly.svg",PluginIcons.class);}然后在plugin.xml配置文件中进行如下设置即可,anchor可设置默认位置,icon用于设置上文的图标:

然后我们需要对前文中创建的布局文件进行些许的修改,增加字段的Get方法:

importjavax.swing.*;/***UI界面**@authorbutterfly*@date2023-12-06*/publicclassUIDemo{/***用户名*/privateJTextFieldusername;/***密码*/privateJTextFieldpassword;privateJPanelmainPanel;publicJTextFieldgetUsername(){returnusername;}publicJTextFieldgetPassword(){returnpassword;}publicJPanelgetMainPanel(){returnmainPanel;}}最后我们就需要对前文中创建的UISettingsConfig.kt文件进行修改,用于处理界面上保存数据的操作:

那我们的配置文件存储位置是在哪里呢?

由于在前文中我们使用applicationConfigurable选择了应用级别的存储,因此文件就存储在IDEA默认的配置文件存储地址:C:\Users\用户名\AppData\Roaming\JetBrains\IntelliJIdea2023.2\options,其中IntelliJIdea2023.2对应自己使用的IDEA名称。不过,由于我们当前是通过沙盒环境运行,所以位置并不是全局设置的位置,而是在build/idea-sandbox/config/options下:

当我们将插件安装到我们正式的IDEA中,也就可以在上述的位置下发现配置文件了:

如果我们将配置设为projectConfigurable选择项目级别,那么首先需要对配置文件进行如下修改:

importcn.butterfly.ui.UIDemoimportcn.butterfly.ui.state.UIDemoStateimportcom.intellij.openapi.options.Configurableimportcom.intellij.openapi.project.Projectimportjavax.swing.JComponent/***UI配置界面配置类**@authorbutterfly*@date2023-12-06*///增加project:Project构造参数classUISettingsConfig(project:Project):Configurable{privatevalform=UIDemo()privatevalcomponent:JComponent//修改该行privatevalstate=project.getService(UIDemoState::class.java)init{component=form.mainPanelreset()}overridefuncreateComponent()=componentoverridefunisModified():Boolean{returnstate.username!=form.username.text||state.password!=form.password.text}overridefunapply(){state.username=form.username.textstate.password=form.password.text}overridefunreset(){form.username.text=state.usernameform.password.text=state.password}overridefungetDisplayName()="UISettingsConfig"}然后我们就可以在项目下的.idea文件夹中找到我们针对项目级别的配置了:

至于读取配置文件,则通过privatevalstate=project.getService(UIDemoState::class.java)或者privatevalstate=ApplicationManager.getApplication().getService(UIDemoState::class.java)分别换取项目或应用级别的state对象,然后读取其中的字段即可。

THE END
1.左/右侧边栏布局(Semidesign)import { Layout }from'@douyinfe/semi-ui'; constLeft=()=>{ //引入 Layout const { Header, Footer,Content, Sider }=Layout; //定义样式 const commonStyle={ height:64, textAlign:'center', width:1300, lineHeight:'64px', background:'var(--semi-color-fill-0)' https://blog.csdn.net/2202_75695913/article/details/145325772
2.iOSSwiftUI侧边栏的实现在主视图中,你需要一个状态变量来控制侧边栏的显示与隐藏,以及一个用于触发动画的方法。 // 侧边栏视图structContentView:View{@StateprivatevarshowSidebar:Bool=falsevarbody:someView{ZStack{// 主内容区域MainView().frame(width:UIScreen.main.bounds.width,height:UIScreen.main.bounds.height).offset(x:selfhttps://www.jianshu.com/p/1fa1495203aa
3.吹爆荣耀手机游戏侧边栏,太好用了。吹爆荣耀手机游戏侧边栏,太好用了。声明:个人原创,仅供参考listter 湖北 1 打开网易新闻 体验效果更佳清朝皇太极御驾亲征,仅用40天便让朝鲜君王臣服 燃心解说 6625跟贴 打开APP 《亡命徒与天使》从天使变成魔鬼,女孩等待的就是一个机会! 无花观影 2996跟贴 打开APP 专打美以船只,胡塞武装的反舰导弹,到底有https://m.163.com/v/video/VYLE60P8O.html
4.MaterialDesign风格侧边栏UI设计这是一款非常实用的 Material Design 风格侧边栏 UI 设计效果。该 Material Design 风格侧边栏支持 4 种侧边栏定位方式和 4 种不同的侧边栏主题效果。并且侧边栏的顶部还可以使用图片和颜色两种模式。该侧边栏 UI 中使用的图标是 Material Design Iconic Font。该侧边栏可以和 Bootstrap3 相结合使用,你需要引入 Bohttps://www.22vd.com/42487.html
5.侧边栏·BootstrapMetroUICSS中文版你可以给侧边栏的菜单项创建彩色贴纸。要创建彩色贴纸,只需要给菜单项添加类名sticker。 Item 使用前缀sticker-的类名给彩色贴纸设置颜色。例如: sticker-color-blue Item 二级菜单 你可以在侧边栏创建二级菜单。 菜单名称 二级下拉菜单 你也可以使用drophttps://www.bootcss.com/p/metro-ui-css/sidebar.html
6.网页UI设计之Sidebar(侧边栏)设计欣赏侧边栏就这么点大小,那么如何设计才更美观且用户体验更好呢? 今天小编为大家整理一系列设计美观的侧边栏UI设计作品,风格多样,如果你不知道怎样制作,请看看这些精选,也许能给你带来创造灵感哦,Enjoy! VōID?—?Product Page 一个时尚的产品展示模块,排版以居中为,多组留白来区域元素,不同的字体层级,看起来简https://gwb.tencent.com/community/detail/106328
7.UI设计之Sidebar(侧边栏)设计欣赏UI设计之Sidebar(侧边栏)设计欣赏 VōID—Product Page 一个时尚的产品展示模块,排版以居中为,多组留白来区域元素,不同的字体层级,看起来简约漂亮。 设计:Mykolas Puod?iūnas Dribbble Chat Client 聊天应用人侧边设计https://www.douban.com/group/topic/84372222/
8.基于elementui的侧边栏及其使用方法基于element-ui的侧边栏及其使用方法 基于element-ui的侧板栏。 效果展示 代码讲解 代码结构 <!-- TabbarLeftView.vue --><template><el-aside width="200px"><el-menudefault-active="1"background-color="#545c64"text-color="#fff"active-text-color="#ffd04b"router><el-submenu index="1"><templatehttps://developer.aliyun.com/article/1421656
9.elementuiadmin整合动态侧边栏和按钮权限控制vue-element-admin给侧边栏增加统计数字标签,点击一次更新一次,也可只渲染一次 上传者:HandsomeGuy_时间:2024-10-14 X-admin-v2.2前端框架 X-admin基于layui的轻量级前端后台管理框架,简单免费,兼容性好,面向所有层次的前后端程序。创立于2017年初,为了敏捷WEB应用开发和简化企业应用开发而诞生的 https://www.iteye.com/resource/caidingnu-12370955
10.vueelement侧边栏示例elementui侧边栏导航但是这样就产生了一个问题:用户如何查看侧边栏中的完整内容。对于这样的问题,有两种解决方式,一是鼠标悬停显示完整内容,二是实现对侧边栏宽度的手动缩放功能(类似表格操作)。 二、解决方式 1、鼠标悬停显示完整内容 鼠标悬停显示完整内容有两种方式:一是使用ElementUI的ToolTip文字提示,这个查看ElementUI文档就知道怎么使https://blog.51cto.com/u_13303/10120233
11.vue+elementui实现多级侧边栏导航博客vue+element-ui 实现多级侧边栏导航 @效果图 <>导航菜单 <!--导航菜单--> <el-menu router :default-active="$route.path" v-show="!collapsed" unique-opened> <!-- 左侧导航栏抽取循环部分 将路由列表传给子组件--> </el-menu> <>asideBarItem组件封装 <template> <el-submenu :index="indexhttps://www.iodraw.com/blog/210507495
12.使用elementui怎么设置菜单栏展开element-ui 侧边栏默认要全部展开怎么做? element-ui文档中是这么写的 default-openeds 当前打开的sub-menu的key数组 给标签加上这个属性 openeds需要在data里面定义一下 openeds是一个数组(当前打开的sub-menu的 key 数组) data () { return { openeds: ['1'], http://chengdu.cdxwcx.cn/article/jjscph.html
13.游民晨播报:Steam免费领取《Polygoneer》《黑镜》第五季IGN8.5分5、《命令与征服:重制版》侧边栏UI公布 EA制作人Jim Vessella今天公布了《命令与征服:重制版》的首张侧边栏UI截图,同时表示他们已经完成了游戏的游戏的预制作阶段,开始全力投入制作过程。开发者表示新的侧边栏是为了减少向下滚动的需求而设计的,从中我们看到游戏中的多种可建造物,另外维修、出售和地图按钮现在都用图https://www.gamersky.com/news/201906/1190793.shtml
14.兼容移动手机的侧边栏多级导航菜单UI设计素材8网侧边,多级,兼容,菜单,移动 网页特效 素材8网-专注前端素材!https://www.sucai8.cn/12456.html
15.创意ui界面设计图片免费下载创意ui界面设计素材千图网为您找到161张创意ui界面设计相关素材,千图网还提供创意ui界面设计图片,创意ui界面设计素材, 创意ui界面设计模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://www.58pic.com/tupian/chuangyiuijiemiansheji.html
16.首字母索引侧边栏ui特效js css3属性制作简单的首字母索引侧边栏滚动展示ui特效。 相关标签 ui布局首字母字母背景搜索引擎索引按钮左侧边浮动菜单字母侧边栏菜单侧边导航字母索引侧边菜单字母动画滑动侧边菜单拼音首字母数字字母侧边栏索引侧边浮动侧边栏设计 使用声明 1. 本站所有素材(未指定商用),仅限学习交流。 https://www.17sucai.com/pins/36249.html
17.ColorOS12玩机课堂?侧边栏全新升级解锁更多好玩功能除此之外,ColorOS 12侧边栏通过「设置>特色功能>智能侧边栏」可以调整浮标透明度、隐藏应用名称,让侧边栏的视觉和交互体验更合您心意。相比于UI,ColorOS 12智能侧边栏功能上的变化更让人惊喜。ColorOS 12智能侧边栏新增智能字幕、朗读文章、听剧模式、识别背景音乐、同款比价、小窗速记、6大功能,更实用更强大!https://www.oneplusbbs.com/forum.php?mod=redirect&tid=6207600&goto=lastpost
18.Vue3和ElementUI01-《ElementUI》安装引入 02-《ElementUI》布局组件 03-《ElementUI》侧边栏菜单 04-《ElementUI》学生列表流程 05-《ElementUI》样式穿透 06-《ElementUI》分页功能 07-《ElementUI》新增学生:渲染专业 08-《ElementUI》新增学生:渲染班级 09-《ElementUI》新增学生:图片上传和确认新增 https://www.woniuxy.com/course/32