【问题标题】:Binding enum values to RadioButton in Java在 Java 中将枚举值绑定到 RadioButton
【发布时间】:2010-01-06 21:56:53
【问题描述】:
我被困在从枚举到 RadioButton 的绑定值中。假设我有一个 bean:
public class ValueObject {
public enum ValueEnum {
FIRST_VALUE,
SECOND_VALUE
}
protected ValueEnum value;
}
我想创建 Swing 单选按钮,用户可以从这两个枚举值中选择一个。当我使用 Netbeans 作为 IDE 时,我也想使用数据绑定来实现,即。将单选按钮绑定到 {valueObject.value}。有任何想法吗?非常感谢!
【问题讨论】:
标签:
java
swing
data-binding
radio-button
【解决方案1】:
哇,转换器真是个好主意!我在下面创建了转换器并使用枚举值对其进行了初始化。
public class ObjectEqualityConverter extends Converter {
private Object o;
public ObjectEqualityConverter() {}
public ObjectEqualityConverter(Object o) {
this.o = o;
}
public Object convertForward(Object value) {
return (o != null && o.equals(value)) ? Boolean.TRUE : Boolean.FALSE;
}
public Object convertReverse(Object value) {
return (Boolean.TRUE.equals(value)) ? o : null;
}
}
【解决方案2】:
我会说这行不通。通常您在小部件和变量之间创建绑定。您的小部件是一个有两种状态的单选按钮,因此您可以将它绑定到一个布尔变量。作为该绑定的结果,如果您按下按钮,布尔变量会变为 true,如果按钮被取消选中,布尔变量会变回 false。
使用 JFace 数据绑定,您将实现一个转换器,该转换器将在布尔值和两个枚举值之间进行转换。该转换器将是数据绑定的一部分(您可以添加验证器和转换器)。不幸的是,我没有使用 Swing 或 netbeans 完成此操作,但方法应该类似:您要么将转换器添加到绑定中,要么必须绑定到布尔变量并在之后进行转换(映射)。