列表和树控件
列表和树控件
JBList和树
列表控件建议使用 JBList ,和JAVA原生的Swing JList 相比,他提供了一些额外的功能,功能如下:
如果一个控件和它当前所在列表的整体宽度不匹配,则会绘制一个显示完整文本的提示条
如果列表没有一个控件,则会在表单的中间绘制一个灰色的文本框,可以通过 getEmptyText().setText() 设置灰色文本框里的内容
使用 **setPaintBusy()**方法,会在列表右上角画一个忙碌中的图标,表示后台任务正在执行。
JAVA原生 JTree 可以使用 Tree 代替,它额外提供了自动缩放的功能
ColoredListCellRenderer 和 ColoredTreeCellRenderer
建议使用 ColoredListCellRenderer 或 ColoredTreeCellRenderer 来渲染你自定义的列表控件或树控件。这两个类可以调用 append() 方法来添加多个属性的描述,可以调用 setIcon() 方法来设置可选图标, 这2个渲染器可以为使用的组件和平台特定的细节自动设置正确的文本颜色。
ListSpeedSearch和TreeSpeedSearch
在列表框或树控件里,想要使用键盘来选择组件,可以使用 ListSpeedSearch 和 TreeSpeedSearch (使用 new ListSpeedSearch(list) 或 new TreeSpeedSearch(tree) 可以很容易实现)。 通过重写 getElementText() 方法可以设置你当前选择元素的显示文本,也可以使用 ListSpeedSearch 和 TreeSpeedSearch 带convert的构造器,convert负责把对象转换为显示用的字符串文本
工具栏装饰器
在插件开发中一个常用的功能是显示一个可以让用户增加,删除,编辑,或排序的列表或树。通过实现 ToolbarDecorator 接口可以很容易的实现该功能。如果底层的数据结构支持(比如数组),通过这个类可以实现拖动元素进行排序。工具栏在列表上方或下方的位置取决于当前运行的IDE 。
使用 ToolbarDecorator 步骤如下:
如果你的列表框里的控件需要支持移除和排序,需要确认你的数据模型实现了 EditableModel 接口。可以参考CollectionListModel ,它实现了 EditableModel 接口。
ToolbarDecorator.createDecorator() 可以创建一个装饰器实例
setAddAction() 方法提供了添加元素的功能 , setRemoveAction() 提供了移除元素功能
addExtraAction() 和 setActionGroup() 可以添加额外的功能
如果在你的面板中需要添加其它组件,可以使用 createPanel() 方法创建组件