在 Java 中将枚举值绑定到 RadioButton

发布于 2024-08-16 23:08:26 字数 316 浏览 1 评论 0原文

我陷入了从枚举到单选按钮的绑定值的困境。假设我有一个 bean:

public class ValueObject {
  public enum ValueEnum {
    FIRST_VALUE,
    SECOND_VALUE
  }

  protected ValueEnum value;
}

我想创建 Swing RadioButtons,用户可以从这两个枚举值中选择一个。当我使用 Netbeans 作为 IDE 时,我还想使用数据绑定来完成它,即。将单选按钮绑定到 {valueObject.value}。有什么想法吗?多谢!

I am stuck in binding values from enum to RadioButton. Lets say I have a bean:

public class ValueObject {
  public enum ValueEnum {
    FIRST_VALUE,
    SECOND_VALUE
  }

  protected ValueEnum value;
}

I want to create Swing RadioButtons where user can select one from these two enum values. As I use Netbeans as IDE I would also like to do it using data binding, ie. bind radio buttons to {valueObject.value}. Any ideas? Thanks a lot!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

八巷 2024-08-23 23:08:26

哇,转换器是个好主意!我创建了下面的转换器并使用枚举值对其进行初始化。

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;
    }
}

Whow, the converter was a great idea! I created the converter below and initialized it with the enum value.

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;
    }
}
梦明 2024-08-23 23:08:26

我想说这不会起作用。通常您会在小部件和变量之间创建绑定。您的小部件是一个两种状态的单选按钮,因此您可以将其绑定到一个布尔变量。由于该绑定,如果按下按钮,布尔变量将更改为 true,如果取消选择按钮,布尔变量将返回到 false。

使用 JFace 数据绑定,您可以实现一个转换器,它可以在布尔值和两个枚举值之间进行转换。该转换器将是数据绑定的一部分(您可以添加验证器和转换器)。不幸的是,我还没有使用 Swing 或 netbeans 完成此操作,但方法应该类似:您要么向绑定添加转换器,要么必须绑定到布尔变量并随后进行转换(映射)。

I'd say it won't work. Usually you create a binding between widget and a variable. Your widget is a two state radio button, so you would bind it to a boolean variable. As a result of that binding, if you press the button, the boolean variable changes to true, if the button becomes deselected, the boolean variable goes back to false.

With JFace databinding you would implement a converter, that would convert between boolean and the two enum values. That converter would be part of the databinding (you can add validators and converters). Unfortunatly I haven't done it with Swing or netbeans, but the approach should be similar: you either add a converter to the binding or you have to bind to a boolean variable and do the conversion (mapping) afterwards.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文