2014-02-11 2 views
0

Java Swing 응용 프로그램이 있고 JTable의 선택된 행을 JTextField에 바인딩하려고합니다. 내 바인딩 모습은 다음과 같습니다 : 더 행이 선택되지 않기 때문에문제 바인딩 JTable selectedRow to JTextField (org.jdesktop.beansbinding)

BeanProperty<JTable, Integer> tableBeanProperty = BeanProperty.create("selectedRow"); 
    BeanProperty<JTextField, String> textFieldProperty = BeanProperty.create("text"); 
    Binding<JTable, Integer, JTextField, String> binding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, table1, tableBeanProperty, field1, textFieldProperty); 
    binding.bind(); 

텍스트 필드와 '-1'처음에 한 번 가득합니다. 행을 클릭하면 텍스트 필드가 업데이트되지 않습니다. 한 가지 추악한 해결 방법은 테이블의 마우스 수신기에서 unbind()bind() 메서드를 호출하는 것입니다. 하지만 제 바인딩 중 누락 된 것이 있다고 생각합니다.

아마도 여러분 중 한 분이 아이디어를 갖고 계신 것 같습니다. 감사합니다.

답변

0

설명서에는 "selectedElement"를이 용도로 사용할 수 있다고 나와 있습니다. 이 속성을 사용하면 못생긴 unbind()bind()없이 작동합니다. 다음과 같이

지금 코드가 같습니다

BeanProperty<JTable, MyObject> tableBeanProperty = BeanProperty.create("selectedElement"); 
BeanProperty<JTextField, String> textFieldProperty = BeanProperty.create("text"); 
Binding<JTable, MyObject, JTextField, String> binding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, table1, tableBeanProperty, field1, textFieldProperty); 
binding.bind(); 

는 "문자열"을 "을 MyObject"를 변환하려면, 나는 바인딩에 컨버터를 추가했다.