2011-09-30 51 views
0

我從util.List與beansbinding.I一個JTable插入數據已包裹的ArrayList到Netbeans的一個ObservableList和assinged到uitl.List.I可觀察列表綁定數據和設置在「內容表」屬性在Netbeans的JTable綁定選項中。第一次更新列表時,JTable也會更新並且沒問題。但是,當我把它扔在可觀察名單被綁定到JTable列表中的另一util.List第二次,列表更新,但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獲取update.the第二次列表更新不起作用。另外,當我將一個對象添加到綁定到JTable的列表中時,JTable將獲取更新。 'suggestionList.add(myObject);'然後添加的對象顯示在JTable中,並且可以添加任意數量的ojbects。任何方式感謝您的關注 –

回答

2

剛纔檢查:它的工作如預期(當然手工編碼,不會接觸Netbeans的),sourceBean擁有財產suggestionList類;

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代碼:該getter/setter方法簽名應該具有相同的類型,你不。在我的測試中沒有什麼不同,在你的上下文中可能會或可能不會指示一些不必要的混淆