模块  java.desktop
软件包  java.beans

Interface PropertyEditor

  • 所有已知实现类:
    PropertyEditorSupport

    public interface PropertyEditor
    PropertyEditor类为希望允许用户编辑给定类型的属性值的GUI提供支持。

    PropertyEditor支持各种不同的显示和更新属性值的方法。 大多数PropertyEditors只需要支持此API中可用的不同选项的子集。

    Simple PropertyEditors可能只支持getAsText和setAsText方法,不需要支持(比方说)paintValue或getCustomEditor。 更复杂的类型可能无法支持getAsText和setAsText,而是支持paintValue和getCustomEditor。

    每个propertyEditor都必须支持三种简单显示样式中的一种或多种。 因此,它可以(1)支持isPaintable或(2)从getTags()返回非null String []并从getAsText返回非null值或(3)从getAsText()返回一个非null String 。

    当参数对象属于相应的propertyEditor类型时,每个属性编辑器都必须支持对setValue的调用。 此外,每个属性编辑器必须支持自定义编辑器或支持setAsText。

    每个PropertyEditor都应该有一个null构造函数。

    从以下版本开始:
    1.1
    • 方法详细信息

      • setValue

        void setValue​(Object value)
        设置(或更改)要编辑的对象。 必须将诸如“int”的原始类型包装为相应的对象类型,例如“java.lang.Integer”。
        参数
        value - 要编辑的新目标对象。 请注意,PropertyEditor不应修改此对象,而PropertyEditor应创建一个新对象来保存任何修改后的值。
      • getValue

        Object getValue()
        获取属性值。
        结果
        财产的价值。 诸如“int”的原始类型将被包装为相应的对象类型,例如“java.lang.Integer”。
      • isPaintable

        boolean isPaintable()
        确定此属性编辑器是否可绘制。
        结果
        如果类将遵循paintValue方法,则为True。
      • paintValue

        void paintValue​(Graphics gfx,                Rectangle box)
        将值的表示绘制到屏幕空间的给定区域中。 请注意,propertyEditor负责执行自己的裁剪,以使其适合给定的矩形。

        如果PropertyEditor不遵守绘制请求(请参阅isPaintable),则此方法应为静默noop。

        给定的Graphics对象将具有父容器的默认字体,颜色等。 PropertyEditor可能会更改图形属性(如字体和颜色),而无需还原旧值。

        参数
        gfx - 要绘制的图形对象。
        box - 我们应该绘制的图形对象中的矩形。
      • getJavaInitializationString

        String getJavaInitializationString()
        返回可用于设置属性以匹配编辑器当前状态的Java代码片段。 此方法旨在用于生成Java代码以反映通过属性编辑器所做的更改。

        代码片段应该是无上下文的,并且必须是JLS指定的合法Java表达式。

        具体来说,如果表达式表示计算,那么所有类和静态成员都应该是完全限定的。 此规则适用于构造函数,静态方法和非基本参数。

        在评估表达式时应该谨慎,因为它可能会抛出异常。 特别是,代码生成器必须确保生成的代码将在存在可以抛出已检查异常的表达式的情况下进行编译。

        示例结果如下:

        • 原始表达: 2
        • 类构造函数: new java.awt.Color(127,127,34)
        • 静电场: java.awt.Color.orange
        • 静态方法: javax.swing.Box.createRigidArea(new java.awt.Dimension(0, 5))
        结果
        表示当前值的初始值设定项的Java代码片段。 它不应该包含一个分号(' ; ')来结束表达式。
      • getAsText

        String getAsText()
        获取属性值作为文本。
        结果
        属性值作为人类可编辑的字符串。

        如果值不能表示为可编辑字符串,则返回null。

        如果返回非null值,那么PropertyEditor应该准备在setAsText()中解析该字符串。

      • setAsText

        void setAsText​(String text)        throws IllegalArgumentException
        通过解析给定的String来设置属性值。 如果String格式错误或者此类属性不能表示为文本,则可能引发java.lang.IllegalArgumentException。
        参数
        text - 要解析的字符串。
        异常
        IllegalArgumentException
      • getTags

        String[] getTags()
        如果属性值必须是一组已知标记值之一,则此方法应返回标记数组。 这可以用于表示(例如)枚举值。 如果PropertyEditor支持标记,那么它应该支持使用带有标记值的setAsText作为设置值的方法以及使用getAsText来标识当前值。
        结果
        此属性的标记值。 如果此属性不能表示为标记值,则可以为null。
      • getCustomEditor

        Component getCustomEditor()
        PropertyEditor可以选择提供编辑其属性值的完整自定义组件。 PropertyEditor有责任将自己连接到其编辑器Component本身,并通过触发PropertyChange事件来报告属性值更改。

        调用getCustomEditor的更高级代码可以将Component嵌入到更大的属性表中,也可以将它放在自己的单独对话框中,或者......

        结果
        一个java.awt.Component,它允许人类直接编辑当前属性值。 如果不支持,则可以为null。
      • supportsCustomEditor

        boolean supportsCustomEditor()
        确定此属性编辑器是否支持自定义编辑器。
        结果
        如果propertyEditor可以提供自定义编辑器,则为True。