Module  java.desktop
软件包  java.beans

Interface PropertyEditor

  • 所有已知实现类:
    PropertyEditorSupport


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

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

    简单的PropertyEditor可能只支持getAsText和setAsText方法,并且不需要支持(例如)paintValue或getCustomEditor。 更复杂的类型可能无法支持getAsText和setAsText,而是支持paintValue和getCustomEditor。

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

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

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

    从以下版本开始:
    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不符合paint请求(请参阅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。

        如果返回非空值,则PropertyEditor应该准备好在setAsText()中解析该字符串。

      • setAsText

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

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

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

        调用getCustomEditor的较高级别的代码可能会将Component嵌入到一些较大的属性表中,也可以将其放在自己的单个对话框中,或者...

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

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