0

util.ListからBeansbindingを使用してJTableにデータを挿入します。ArrayListをObservableListにラップし、uitl.Listに割り当てられたObservableリストを作成しました。Netbeansでデータをバインドし、Netbeansの「TableContent」でプロパティを設定しました。JTableBeanbindingオプション'。リストが初めて更新されると、JTableも更新され、問題ありません。しかし、2回目にObservableリストにキャストされた別のutil.ListをJTableにバインドされたリストに設定すると、リストは更新されますが、JTableは更新されません(ただし、リストを設定すると、System.out。 pr ..はリストの正しい値を出力します。ここでは、util.ListをObservableListに変更し、その逆を行って問題の場所を見つけましたが、期待どおりの結果は得られませんでした)(ただし、JTableにバインドされたリストにオブジェクトを追加すると、 JTableが更新されました。

これがリストを設定するために使用される私のコードです

 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();
    }
}
4

1 に答える 1

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);

要約:表示していないコードに問題があります;-)

ところで:ゲッター/セッターの署名は同じタイプである必要がありますが、これはあなたの署名ではありません。私のテストでは違いはありません。あなたのコンテキストでは、不要な取り違えを示している場合と示していない場合があります。

于 2011-09-30T08:37:11.423 に答える