Привязка значений перечисления к RadioButton в Java - PullRequest
1 голос
/ 06 января 2010

Я застрял в значениях привязки от enum до RadioButton. Допустим, у меня есть боб:

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

  protected ValueEnum value;
}

Я хочу создать Swing RadioButton, где пользователь может выбрать одно из этих двух значений перечисления. Поскольку я использую Netbeans в качестве IDE, я также хотел бы сделать это с помощью привязки данных, т.е. привязать переключатели к {valueObject.value}. Есть идеи? Большое спасибо!

Ответы [ 2 ]

1 голос
/ 06 января 2010

Ух, конвертер был отличной идеей! Я создал конвертер ниже и инициализировал его значением enum.

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;
    }
}
0 голосов
/ 06 января 2010

Я бы сказал, что это не сработает. Обычно вы создаете привязку между виджетом и переменной. Ваш виджет является переключателем с двумя состояниями, поэтому вы должны связать его с логической переменной. В результате этой привязки, если вы нажмете кнопку, логическая переменная изменится на true, если кнопка будет отменена, логическая переменная вернется в false.

С привязкой данных JFace вы реализовали бы конвертер, который будет конвертировать между логическим и двумя значениями перечисления. Этот конвертер будет частью привязки данных (вы можете добавить валидаторы и конвертеры). К сожалению, я не сделал этого с Swing или NetBeans, но подход должен быть похожим: вы либо добавляете конвертер в привязку, либо вам приходится связываться с булевой переменной и затем выполнять преобразование (отображение).

...