【问题标题】: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 完成此操作,但方法应该类似:您要么将转换器添加到绑定中,要么必须绑定到布尔变量并在之后进行转换(映射)。

      【讨论】:

        猜你喜欢
        • 2015-10-17
        • 2017-05-10
        • 1970-01-01
        • 2018-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        相关资源
        最近更新 更多