Module java.desktop
Package java.beans

Interface PropertyEditor

所有已知的实现类:
PropertyEditorSupport

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

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

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

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

每个property editor必须在参数对象是对应propertyEditor的类型时支持setValue的调用。此外,每个property editor必须支持自定义编辑器,或者支持setAsText。

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

自1.1版本起:
1.1
  • Method Details

    • setValue

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

      Object getValue()
      获取属性值。
      返回:
      属性的值。原始类型(如"int")将被包装为相应的对象类型(如"java.lang.Integer")。
    • isPaintable

      boolean isPaintable()
      确定此属性编辑器是否可绘制。
      返回:
      如果类将遵守paintValue方法,则返回true。
    • paintValue

      void paintValue(Graphics gfx, Rectangle box)
      在屏幕的给定区域中绘制值的表示。请注意,PropertyEditor负责进行自身的裁剪,以使其适合给定的矩形。

      如果PropertyEditor不支持绘制请求(请参见isPaintable),则此方法应该是一个静默的空操作。

      给定的Graphics对象将具有父容器的默认字体、颜色等。PropertyEditor可以更改图形属性,如字体和颜色,并且不需要恢复旧值。

      参数:
      gfx - 要绘制的Graphics对象。
      box - 要绘制到的Graphics对象内的矩形。
    • 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
      通过解析给定的字符串设置属性值。如果字符串格式不正确或者此类属性无法表示为文本,则可能引发java.lang.IllegalArgumentException。
      参数:
      text - 要解析的字符串。
      抛出:
      IllegalArgumentException
    • getTags

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

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

      调用getCustomEditor的高级代码可以将组件嵌入到某个更大的属性表中,或者可以将其放在自己的单独对话框中,等等...

      返回:
      一个java.awt.Component,允许用户直接编辑当前属性值。如果不支持,则可能为null。
    • supportsCustomEditor

      boolean supportsCustomEditor()
      确定此属性编辑器是否支持自定义编辑器。
      返回:
      如果PropertyEditor可以提供自定义编辑器,则返回true。
    • addPropertyChangeListener

      void addPropertyChangeListener(PropertyChangeListener listener)
      添加一个监听器以监听值的更改。当属性编辑器更改其值时,应在所有注册的PropertyChangeListener上触发一个PropertyChangeEvent,指定属性名称为null值,自身为源。
      参数:
      listener - 要添加的PropertyChangeListener
    • removePropertyChangeListener

      void removePropertyChangeListener(PropertyChangeListener listener)
      移除值更改的监听器。
      参数:
      listener - 要移除的PropertyChangeListener