JGoodies 바인딩 2.9.1을 사용하여 의 enabled
속성을 열거 속성에 바인딩하려고합니다. 이 일방 통행 작업을 원합니다. 속성이 변경되면 JTextField
을 사용하거나 사용하지 않도록 설정하고 싶지만 다른 방법으로 이동하여 enabled
값을 기반으로 열거 형 속성을 설정하지 않으십시오.JGoodies 바인딩을 사용하는 읽기 전용 바인딩 및 단방향 변환기
모든 것을 제대로 설정했다고 생각하지만 PropertyAccessException이 발생합니다. 적응 된 Java Bean 속성을 설정하지 못했습니다..
내 모델은 표준 Java Bean은 속성 변경 이벤트를 함께 :
private final class EnumMatchToEnabledConverter implements BindingConverter<MyEnum, Boolean> {
private MyEnum match;
public EnumMatchToEnabledConverter (MyEnum match) {
this.match = match;
}
@Override
public Boolean targetValue(MyEnum source) {
return (source == match);
}
@Override
public MyEnum sourceValue(Boolean target) {
// this wouldn't make sense
throw new UnsupportedOperationException();
}
}
:
내보기에서
public static String MY_PROPERTY = "myProperty";
private MyEnum myProperty;
public MyEnum getMyProperty() { return myProperty; }
public void setMyProperty(final MyEnum newValue) {
final MyEnum oldValue = myProperty;
if (newValue == oldValue) { return; }
myProperty = newValue;
changeSupport.firePropertyChange(MY_PROPERTY, oldValue, newValue);
}
바운드 값이 제공된 값과 일치 할 때 나는 true를 돌려줍니다 단방향 변환이 놀랍게도
PresentationModel<MyModel> pm = new PresentationModel<MyModel>(model);
Bindings.bind(
myTextField, "enabled", new ConverterValueModel(
pm.getModel(MyModel.MY_PROPERTY),
new EnumMatchToEnabledConverter(MyEnum.MyValue)));
,:
는 그럼 난 바인딩 설정의 sourceValue()
메서드가 호출되면 UnsupportedOperationException
이 발생하기 때문에 바인딩에서 PropertyAccessException
이 나옵니다.
또한 명시 적으로는 세터를 사용하지 않는 바인딩 말하는 시도,하지만, 난 여전히 같은 문제가있어 : 내가 잘못
Bindings.bind(
myTextField, "enabled", new ConverterValueModel(
pm.getModel(MyModel.MY_PROPERTY, "getMyProperty", null), // null setter!
new EnumMatchToEnabledConverter(MyEnum.MyValue)));
을 가고 있습니까?
누군가가이 일을 성공적이었던 것으로 나타납니다 http://stackoverflow.com/questions/5948147/how-can-i-bind-a-property-eg-an-enum-to-a- 구성 요소 - of-a-different –