idea平台的UI是基于Swing开发,但在几个特殊组件上idea提供了优化的替代方案,建议但不强制使用。
一、idea的UI体系
官方文档
上图中与Swing不太一样的组件主要有如下几个,将来编写插件时建议使用idea提供的组件,否则要自己写大量的功能性代码:
- EditorTextField:JTextArea替换成IntelliJ 平台的编辑器组件增加了:语法高亮支持、代码完成、代码折叠等功能;
- JBTList:替换JList
- JBTree:替换JTree:
- 文件选择器:可按需要使用FileChooser、TreeClassChooserFactory和PackageChooserDialog,后面两个是针对类和包的;
- Messages:可通过showCheckboxMessageDialog()方法创建简单的消息框;
-
JBSplitter:替换JSplitPane
-
JBTabs:替换TabbedPane
-
Toolbars:替换JToolBar
对于其它的控件也建议换成IDEA的,方法就是把原来Swing控件的类名由J开头换成JB开头即可。
二、IDEA自带的Swing设计器
可以自己编码,也可以直接通过File | New | Swing UI Designer 创建Window或Dialog。常用的组件大体如下:
调试UI时,可使用 Tool | internal Tool 中附带的工具。
三、JBTList和JBTree
虽然可以使用Swing中的JTree和JList,但建议使用替换类JBTList和JBTree。因为性能被增强了
1、ColoredListCellRenderer 和 ColoredTreeCellRenderer
当您需要自定义列表框或树中项目的表示时,建议使用 或ColoredListCellRenderer类ColoredTreeCellRenderer作为单元格渲染器。
这些类允许您通过调用 将具有不同属性的多个文本片段组成演示文稿append(),并通过调用 为项目设置一个可选图标setIcon()。渲染器自动负责为所选项目设置正确的文本颜色以及许多其他特定于平台的渲染细节。
2、ListSpeedSearch 和 TreeSpeedSearch
为了便于在列表框或树中基于键盘选择项目,您可以使用 和 在其上安装快速搜索处理ListSpeedSearch程序TreeSpeedSearch。new ListSpeedSearch(list)这可以简单地通过调用或来完成new TreeSpeedSearch(tree)。
要自定义用于定位元素的文本,请覆盖该getElementText()方法。或者,您可以传递一个函数将项目转换为字符串。需要将函数传递elementTextDelegate给ListSpeedSearch构造函数或构造toString函数TreeSpeedSearch。
四、工具栏装饰器
对列表和树显示时一般都会有一些过滤、编辑等操作功能,这时就会有多个按钮,此时可使用ToolbarDecorator。
-
如果您需要支持删除和重新排序列表框中的项目,请确保您的列表模型实现了该EditableModel接口。CollectionListModel是实现此接口的便捷模型类。
-
调用ToolbarDecorator.createDecorator()以创建装饰器实例。
-
如果您需要支持添加和/或删除项目,请调用
setAddAction()
和/或setRemoveAction()
。 -
如果您需要标准按钮以外的其他按钮,请致电
addExtraAction()
或setActionGroup()
。文章来源:https://www.toymoban.com/news/detail-629539.html -
调用
createPanel()
它返回的组件并将其添加到您的面板。文章来源地址https://www.toymoban.com/news/detail-629539.html
到了这里,关于idea插件开发(5)-Idea的UI体系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!