public interface PropertyEditor
PropertyEditor 类为希望允许用户编辑某个给定类型的属性值的 GUI 提供支持。
PropertyEditor 支持各种不同类型的显示和更新属性值的方式。大多数 PropertyEditor 只需要支持此 API 中可用的不同选项的一个子集。
简单的 PropertyEditor 可能只支持 getAsText 和 setAsText 方法,不需要支持(比如说)paintValue 或 getCustomEditor。更多复杂类型的 PropertyEditor 可能无法支持 getAsText 和 setAsText,但它们将改为支持 paintValue 和 getCustomEditor。
每个 propertyEditor 都必须支持三种简单显示样式之一或更多。这样便可以:(1) 支持 isPaintable;(2) 从 getTags() 返回一个非 null 的 String[],以及从 getAsText 返回一个非 null 值;(3) 只从 getAsText() 返回一个非 null 的 String。
当此类是参数对象类型相对应的 propertyEditor 时,每个属性编辑器都必须支持调用 setValue。此外,每个属性编辑器都必须支持一个自定义编辑器,或者支持 setAsText。
每个 PropertyEditor 都应该有一个 null 构造方法。
方法摘要 | |
---|---|
void |
addPropertyChangeListener(PropertyChangeListener listener) 注册一个用于 PropertyChange 事件的侦听器。 |
String |
getAsText() 以文本形式获得属性值。 |
Component |
getCustomEditor() PropertyEditor 可以选择使用完全自定义的 Component 来编辑自己的属性值。 |
String |
getJavaInitializationString() 返回一部分 Java 代码,可以使用这部分代码来设置某个属性,以匹配编辑器当前状态。 |
String[] |
getTags() 如果属性值必须是一组已知的加标记值之一,则此方法应该返回一个标记数组。 |
Object |
getValue() 获取属性值。 |
boolean |
isPaintable() 确定此属性编辑器是否是可绘制的。 |
void |
paintValue(Graphics gfx, Rectangle box) 在屏幕实际状态给定区域中绘制值的表示形式。 |
void |
removePropertyChangeListener(PropertyChangeListener listener) 移除一个用于 PropertyChange 事件的侦听器。 |
void |
setAsText(String text) 通过解析给定 String 设置属性值。 |
void |
setValue(Object value) 设置(或更改)将编辑的对象。 |
boolean |
supportsCustomEditor() 确定此属性编辑器是否支持自定义编辑器。 |
方法详细信息 |
---|
void setValue(Object value)
value
- 要编辑的新目标对象。注意,不应由 PropertyEditor 修改此对象,相反 PropertyEditor 应该创建一个新对象来保存所有修改值。
Object getValue()
boolean isPaintable()
void paintValue(Graphics gfx, Rectangle box)
如果 PropertyEditor 不支持绘制请求(参见 isPaintable),则此方法应该是一个静寂的无操作。
给定 Graphics 对象将拥有父容器的默认字体、颜色等等。PropertyEditor 可以更改图形属性(比如字体和颜色),并且无需恢复旧值。
gfx
- 要绘制的 Graphics 对象。
box
- 应该在其中绘制图形对象的矩形。
String getJavaInitializationString()
代码片段应该是上下文无关的,并且必须是一个合法的 Java 表示式,正如 JLS 所规定的那样。
明确地说,如果表达式表示某一计算,则所有类和静态成员都应是完全限定的。此规则适用于构造方法、静态方法和非基本参数。
在对该表达式求值时应该使用警告,因为它可能抛出异常。特别要指出的是,代码生成器必须确保生成的代码能够在存在可能抛出已检查异常的表达式的情况下进行编译。
示例结果是:
2
new java.awt.Color(127,127,34)
java.awt.Color.orange
javax.swing.Box.createRigidArea(new java.awt.Dimension(0, 5))
;
')。
String getAsText()
如果无法将该值表示为可编辑的字符串,则返回 null。
如果返回的是一个非 null 值,则应该准备好 PropertyEditor,以便回到 setAsText() 中解析字符串。
void setAsText(String text) throws IllegalArgumentException
text
- 要解析的字符串。
IllegalArgumentException
String[] getTags()
Component getCustomEditor()
调用 getCustomEditor 的更高级别的代码可以将 Component 嵌入一些更大的属性表单,或者放入它们自己的个别对话框,或者……
boolean supportsCustomEditor()
void addPropertyChangeListener(PropertyChangeListener listener)
listener
- 激发 PropertyChange 事件时要调用的对象。
void removePropertyChangeListener(PropertyChangeListener listener)
listener
- 要移除的 PropertyChange 侦听器。