2011-09-30 5 views
0

beansbuinding이있는 JTable에 util.List의 데이터를 삽입합니다. NetBeans의 데이터를 바인딩하고 'Table Content'에 속성을 설정하는 ObservableList 및 Observable 목록에 ArrayList를 래핑했습니다. Netbeans의 JTable Beanbinding 옵션에서. 목록이 업데이트 될 때 처음으로 JTable도 업데이트되고 정상입니다. 그러나 두 번째로 Observable 목록에 캐스팅 된 util.List를 JTable에 바인딩 된 목록으로 설정하면 목록이 업데이트되지만 JTable은 업데이트되지 않습니다. (그러나 목록을 설정하면 System.out. pr .. 목록의 올바른 값을 출력합니다. 여기서는 util.List를 ObservableList로 변경하고 그 반대의 경우는 문제가있는 곳을 찾지 만 예상 한 결과는 없습니다.) 그러나 JTable에 바인딩 된 목록에 객체를 추가하면 JTable이 업데이트되었습니다.) 목록이 업데이트 될 때 JTable을 어떻게 업데이트 할 수 있습니까? 즉, 새 목록을 설정할 때 테이블이 새 목록을 설정할 때마다 업데이트됩니다. 여기 jTable beansbinding

내 코드는

public List<Customer> getSuggestionList() { 
    return suggestionList; 
} 

public void setSuggestionList(ObservableList suggestionList) { 

    try { 
     List oldSuggestionList = this.suggestionList; 
     this.suggestionList = suggestionList; 
     propertySupport.firePropertyChange(PROP_SUGGESTIONLIST, oldSuggestionList, suggestionList); 

     System.out.println("Suggestionlist is setted-----------"); 
     Customer c = (Customer) suggestionList.get(0); 
     System.out.println("sugesstion list customer--------" + c.getCustFname()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

스 니펫이 괜찮아 보입니다 - 내가 잘못 생각할 수있는 것은 PROP_ 상수 값의 맞춤법입니다. – kleopatra

+0

나는이 코드가 ok.JTable가 처음으로 목록을 설정하는 것이기 때문에 ok라고 생각한다 .JTable은 업데이트를 얻는다. 두 번째 시간 목록 업데이트는 작동하지 않는다. 또한 JTable에 바인딩 된 목록에 객체를 추가하면 JTable이 업데이트를 가져옵니다. 'suggestionList.add (myObject);'그러면 추가 된 객체가 JTable에 표시되고 여러 개의 객체가 추가 될 수 있습니다. 당신의주의를 위해 어떤 방법 으로든 감사합니다. –

답변

2

그냥 확인 목록을 설정하는 데 사용됩니다 : 속성 suggestionList이있는 클래스를 sourceBean (물론 수동 코딩, 넷빈즈를 만지지 것)이 예상대로 작동하고;

BindingGroup context = new BindingGroup(); 
    BeanProperty valuesProperty = BeanProperty.create("suggestionList"); 

    JTableBinding tableBinding = SwingBindings.createJTableBinding(
      UpdateStrategy.READ_WRITE, 
      sourceBean, valuesProperty, 
      table); 
    context.addBinding(tableBinding); 
    tableBinding.addColumnBinding(BeanProperty.create("firstName")); 
    tableBinding.addColumnBinding(BeanProperty.create("lastName")); 
    context.bind(); 

    // add a button which changes the suggestionList 
    Action next = new AbstractAction("new data") { 

     public void actionPerformed(ActionEvent e) { 
      sourceBean.setSuggestionList(createRandomData()); 
     } 

    }; 
    button.setAction(next); 

요약 : 게터/세터 서명은 당신이 그나마 동일한 유형을 가져야한다 : 뭔가 당신이 BTW

;-)을 표시되지 않는 코드에 문제가 있습니다. 귀하의 컨텍스트에서 내 테스트에 차이를 만들지 않을 수도 있습니다 또는 원하지 않는 혼란을 나타내지 않을 수도 있습니다