NetBeans选择管理教程IIII 属性编辑器教程

2023-11-10 08:30

本文主要是介绍NetBeans选择管理教程IIII 属性编辑器教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文来源:https://netbeans.apache.org/tutorials/60/nbm-property-editors.html

上一篇使用Nodes API讲述了Nodes API的某些功能。

本教程介绍了在NetBeans中使用属性编辑器的技术,包括提供自定义编辑器和自定义就地编辑器。具体来说,将涵盖以下内容:

  1. 为单个节点提供自己的属性编辑器
  2. 创建一个自定义编辑器
  3. 创建自定义就地编辑器
  4. 全局注册自定义属性编辑器

通常,您可能拥有标准属性编辑器不足的属性,或者属性类型是没有标准属性编辑器的类。NetBeans IDE包含许多常见的Swing类型的类,但是一组通用属性编辑器无法满足所有可能的需求。

本教程旨在作为之前的这些教程的补充,其代码基于其中的代码:

  • 选择管理教程I-使用TopComponent的查找

  • NetBeans选择管理教程II-使用节点

  • 使用Nodes API

您将在上一教程中从上次结束的地方开始学习,该类MyNode包装了一个APIObject对象,并为其index属性提供了一个只读属性,并为其属性提供了一个读/写date属性。

创建属性编辑器

创建属性编辑器的基础非常简单。JavaBeans API提供了一个基类,该基类PropertyEditorSupport涵盖了大多数基础知识,并且可以用于创建几乎不需要任何工作的简单属性编辑器。

属性编辑器有两个用途:在字符串之间来回转换值以显示在属性表中,以及在设置新值时对其进行验证。首先,您将创建一个属性编辑器,该属性编辑器仅提供并接受不同格式的日期。

1、右键单击该org.myorg.myeditor软件包,然后选择“新建”>“ Java类”。在向导中,将类命名为DatePropertyEditor

2、在代码编辑器中,将类签名更改为extend PropertyEditorSupport

public class DatePropertyEditor extends PropertyEditorSupport {

3、落实setAsText()getAsText()如下:

    public String getAsText() {Date d = (Date) getValue();if (d == null) {return "No Date Set";}return new SimpleDateFormat("MM/dd/yy HH:mm:ss").format(d);}public void setAsText(String s) {try {setValue(new SimpleDateFormat("MM/dd/yy HH:mm:ss").parse(s));} catch (ParseException pe) {IllegalArgumentException iae = new IllegalArgumentException("Could not parse date");throw iae;}}

4、MyNode在代码编辑器中打开。更改声明的行,createSheet方法中,dateProperty以便将变量声明为,PropertySupport.Reflection而不是Property。您将调用特定于PropertySupport.Reflection以下方法的方法:

            Property indexProp = new PropertySupport.Reflection(obj, Integer.class, "getIndex", null);
//            Property dateProp = new PropertySupport.Reflection(obj, Date.class, "date");PropertySupport.Reflection dateProp = new PropertySupport.Reflection(obj, Date.class, "date");dateProp.setPropertyEditorClass(DatePropertyEditor.class);

6、运行模块套件,使用“文件”>“打开编辑器”打开您的编辑器组件,并注意Date属性的新格式,如下所示:

创建自定义编辑器

标准`java.beans.PropertyEditor`s的另一个基本功能是具有“自定义编辑器”的功能,当您单击属性表中属性旁边的“…”按钮时,该对话框通常会显示在对话框中。

关于实现这种编辑器的细节不在本教程的讨论范围之内,但是这里是基础知识:

1、在上实现以下两种方法DatePropertyEditor

    public Component getCustomEditor() {return new JLabel("I want to be a custom editor");}public boolean supportsCustomEditor() {return true;}

2、运行套件,现在在属性表中的属性旁边有一个“…”按钮,如下所示: 单击它,您的JLabel出现:

如果您是真正执行此操作,则可以创建一个JPanel,并嵌入某种日历和/或时钟组件以使其易于设置属性。正确执行此操作所需的代码将使您分心。

3、在继续操作之前,请删除以上两种方法

创建自定义编辑器

真正有用的是在属性表中嵌入一个更好的日期编辑器。NetBeans具有一个使之成为可能的API。它涉及一些代码,但是结果值得。

由于java.net上的 SwingLabs项目生成了一个不错的日期选择器组件,因此您只需重复使用该组件即可。因此,您需要做的第一件事就是将SwingX放入NetBeans。

1、swingx.jar从 SwingLabs站点下载(出于许可原因,不能将其保存在NetBeans CVS中)。

找到一个可以用的下载地址:http://www.java2s.com/Code/Jar/s/Downloadswingx092jar.htm

2、展开SelectionSuite,右键单击Modules节点,然后选择Add New Library,如下所示:

3、浏览swingx.jar刚刚下载的。点击下一步

4、再次单击“下一步”,注意代码名称库将为 org.jdesktop.swingx,然后单击“完成”。

5、右键单击主窗口中“项目”选项卡中的“My Editor”项目节点,然后选择“属性”。

6、在“库”页面中,单击“添加依赖项”按钮,然后在新的swingx-wrapper库包装器模块上添加依赖项。

现在您可以使用日期选择器了。这将涉及实现几个NetBeans特定的接口:

  • ExPropertyEditor-属性编辑器界面,属性表可以通过该界面传递“环境”(PropertyEnv)对象,该对象使编辑者可以访问Property其正在编辑的对象以及其他内容。

  • InplaceEditor.Factory-拥有一个对象的对象的接口 InplaceEditor

  • InplaceEditor-一个接口,允许提供自定义组件以在属性表中显示。

您将实现InplaceEditor.FactoryExPropertyEditor直接DatePropertyEditor,然后创建一个InplaceEditor嵌套类:

1、DatePropertyEditor如下更改签名:

public class DatePropertyEditor extends PropertyEditorSupport implements ExPropertyEditor, InplaceEditor.Factory {

2、与前面的示例一样,请按Ctrl-Shift-I修复导入,然后使用“实施所有抽象方法”来添加缺少的方法。

3、将以下方法添加到DatePropertyEditor

    public void attachEnv(PropertyEnv env) {env.registerInplaceEditorFactory(this);}private InplaceEditor ed = null;public InplaceEditor getInplaceEditor() {if (ed == null) {ed = new Inplace();}return ed;}

4、现在,您需要实现InplaceEditor自身。这将是一个拥有一个swingx JXDatePicker组件的对象,以及一些设置其值的管道方法,并在不再使用它时处置资源。它需要一些代码,但是非常简单。只需在其中创建Inplace一个静态嵌套类即可DatePropertyEditor

5、如果还没有,请按Ctrl-Shift-I修复导入。

6、再次运行套件,使用“文件”>“打开编辑器”打开您的编辑器(实际上不再是一个编辑器),选择的一个实例,MyNode然后单击属性表中date属性的值。请注意,将出现日期选择器弹出窗口,并且其行为与应有的行为完全相同,如下所示:

全局注册DatePropertyEditor

通常,注册属性编辑器以用于给定类型的所有属性通常很有用。实际上,您DatePropertyEditor通常对类型的任何属性都有用java.util.Date。虽然有用性不是是否应注册这种属性编辑器的主要决定因素,但是如果您的应用程序或模块将定期处理Date属性,则这样做可能会很有用。

这是注册方法,DatePropertyEditor以便该类型的任何属性java.util.Date都可以DatePropertyEditor在属性表中使用:

 1、右键单击“My Editor”项目,然后从弹出菜单中选择“属性”。

2、在项目属性对话框的“库”页面上,单击“添加依赖关系”,您需要添加对Module System API的依赖关系,以便可以子类化ModuleInstall以在startup.Type上运行一些代码ModuleInstall。该对话框应自动选择“模块系统API”。按Enter或单击“确定”以从“My Editor”模块添加对Modules API的依赖关系。

3、右键单击“org.myorg.myeditor项目中的包,然后选择“新建”>“其他”。在“ NetBeans模块开发”类别下,选择“模块安装程序”。单击完成。org.openide.modules.ModuleInstall将为您创建的子类-此类包含将在启动期间运行的代码。

4、实现restored()在启动过程中运行的方法,如下所示:

    @Overridepublic void restored() {PropertyEditorManager.registerEditor(Date.class, DatePropertyEditor.class);}

该代码将注册DatePropertyEditorjava.util.Date整个系统中该类型的所有属性的默认编辑器。

5、按Ctrl-Shift-I修复导入。

请记住,只有在确实需要时才应该这样做– ModuleInstall类会减慢应用程序的启动速度,因为它们意味着启动期间必须运行更多的代码。因此,应尽可能避免使用它们。但是,如果确实需要注册许多属性编辑器,则将它们聚合到一个在启动期间注册它们的单个模块中可能是有意义的。

如果要在模块中提供属性编辑器的类型,则最好将注册代码放置在静态块中,该类在加载该类时将被调用,例如

public class Foo {static {PropertyEditorManager.registerEditor(Foo.class, FooEditor.class);}//...

注意:如果不确定在典型的会话期间将使用属性编辑器,则可以使用更好的技术PropertyEditorManager.setEditorSearchPath(),将您的软件包添加到所返回的软件包数组中PropertyEditorManager.getEditorSearchPath()。上面的代码将导致FooEditor.class被加载到内存中,这将为不使用的内容支付大约1K的内存。对于一两个属性编辑器来说,这可能是可以接受的。要获得更多信息,最好将所有属性编辑器聚合到一个程序包中,适当地命名类并注册该程序包在搜索路径中。有关注册属性编辑器的更多信息,请参见“ PropertyEditorManager ” 的javadoc 。

使用PropertyPanel

尽管您不会详细介绍它,但是值得一提的是,属性表并不是Node.Property对象有用的唯一地方;也有在一个方便的UI类org.openide.explorer.PropertySheet类调用PropertyPanel。它的功能是显示一个属性,就像在属性表中显示的一样,提供一个编辑器字段和一个自定义编辑器按钮,或者您已经调用somePropertyPanel.setPreferences(PropertyPanel.PREF_CUSTOM_EDITOR),它将显示一个自定义编辑器Property。这是一种获取合适的UI组件的便捷方法,该UI组件用于编辑具有属性编辑器的任何getter / setter对。

这篇关于NetBeans选择管理教程IIII 属性编辑器教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381530

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者