Data binding JavaFXObservableList与子列表的绑定

Data binding JavaFXObservableList与子列表的绑定,data-binding,javafx,observablecollection,Data Binding,Javafx,Observablecollection,我有两个观察者 public static ObservableList<ImageData> datas_all, datas_flickr; publicstaticobservelistdatas\u all,datas\u flickr; datas_flickr中的所有对象都包含在datas_All中(datas_flickr是datas_All的子集)。我有一个带有两个不同选项卡的GUI。两个选项卡都包含表视图。一个TableView显示来自datas_all

我有两个观察者

    public static ObservableList<ImageData> datas_all, datas_flickr;
publicstaticobservelistdatas\u all,datas\u flickr;
datas_flickr中的所有对象都包含在datas_All中(datas_flickr是datas_All的子集)。我有一个带有两个不同选项卡的GUI。两个选项卡都包含表视图。一个TableView显示来自datas_all的数据,另一个TableView显示来自datas_flickr的数据

两个选项卡都有一个删除按钮,用于删除在相应的TableView中选择的对象。现在我想知道是否有任何简单的方法可以将datas\u flickr中的对象与其在datas\u all中对应的对象绑定起来?

在您的情况下不起作用,因为它需要
ObservableList
来包含相同的数据

您可以通过使用
datas\u flickr

工作样本

import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;

public class SubListBinding {

    public static void main(String[] args) {
        ObservableList<String> list = FXCollections.observableArrayList();
        ObservableList<String> subList = FXCollections.observableArrayList();
        list.addAll("a", "b", "c");
        subList.addAll("x", "y", "z");
        list.addAll(subList);
        subList.addListener(new ListChangeListener<String>() {
             public void onChanged(Change<? extends String> c) {
                 while (c.next()) {
                     if (c.wasPermutated()) {
                         for (int i = c.getFrom(); i < c.getTo(); ++i) {
                              //permutate
                         }
                     } else if (c.wasUpdated()) {
                              //update item
                     } else {
                         for (String remitem : c.getRemoved()) {
                             list.remove(remitem);
                         }
                         for (String additem : c.getAddedSubList()) {
                             list.add(additem);
                         }
                     }
                 }
             }
         });
        System.out.println("Before removal..");
        System.out.println("List : " + list);
        System.out.println("SubList : " + subList);
        System.out.println("After removal..");
        subList.remove("y");
        System.out.println("List : " + list);
        System.out.println("SubList : " + subList);
    }

}
导入javafx.collections.FXCollections;
导入javafx.collections.ListChangeListener;
导入javafx.collections.ObservableList;
公共类子列表绑定{
公共静态void main(字符串[]args){
ObservableList=FXCollections.observableArrayList();
ObservableList子列表=FXCollections.observableArrayList();
列表。添加全部(“a”、“b”、“c”);
子列表addAll(“x”、“y”、“z”);
list.addAll(子列表);
subList.addListener(新ListChangeListener(){
public void onChanged(Change在您的情况下不起作用,因为它需要
observebleList
包含相同的数据

您可以通过使用
datas\u flickr

工作样本

import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;

public class SubListBinding {

    public static void main(String[] args) {
        ObservableList<String> list = FXCollections.observableArrayList();
        ObservableList<String> subList = FXCollections.observableArrayList();
        list.addAll("a", "b", "c");
        subList.addAll("x", "y", "z");
        list.addAll(subList);
        subList.addListener(new ListChangeListener<String>() {
             public void onChanged(Change<? extends String> c) {
                 while (c.next()) {
                     if (c.wasPermutated()) {
                         for (int i = c.getFrom(); i < c.getTo(); ++i) {
                              //permutate
                         }
                     } else if (c.wasUpdated()) {
                              //update item
                     } else {
                         for (String remitem : c.getRemoved()) {
                             list.remove(remitem);
                         }
                         for (String additem : c.getAddedSubList()) {
                             list.add(additem);
                         }
                     }
                 }
             }
         });
        System.out.println("Before removal..");
        System.out.println("List : " + list);
        System.out.println("SubList : " + subList);
        System.out.println("After removal..");
        subList.remove("y");
        System.out.println("List : " + list);
        System.out.println("SubList : " + subList);
    }

}
导入javafx.collections.FXCollections;
导入javafx.collections.ListChangeListener;
导入javafx.collections.ObservableList;
公共类子列表绑定{
公共静态void main(字符串[]args){
ObservableList=FXCollections.observableArrayList();
ObservableList子列表=FXCollections.observableArrayList();
列表。添加全部(“a”、“b”、“c”);
子列表addAll(“x”、“y”、“z”);
list.addAll(子列表);
subList.addListener(新ListChangeListener(){
public void onChanged(Change在您的情况下不起作用,因为它需要
observebleList
包含相同的数据

您可以通过使用
datas\u flickr

工作样本

import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;

public class SubListBinding {

    public static void main(String[] args) {
        ObservableList<String> list = FXCollections.observableArrayList();
        ObservableList<String> subList = FXCollections.observableArrayList();
        list.addAll("a", "b", "c");
        subList.addAll("x", "y", "z");
        list.addAll(subList);
        subList.addListener(new ListChangeListener<String>() {
             public void onChanged(Change<? extends String> c) {
                 while (c.next()) {
                     if (c.wasPermutated()) {
                         for (int i = c.getFrom(); i < c.getTo(); ++i) {
                              //permutate
                         }
                     } else if (c.wasUpdated()) {
                              //update item
                     } else {
                         for (String remitem : c.getRemoved()) {
                             list.remove(remitem);
                         }
                         for (String additem : c.getAddedSubList()) {
                             list.add(additem);
                         }
                     }
                 }
             }
         });
        System.out.println("Before removal..");
        System.out.println("List : " + list);
        System.out.println("SubList : " + subList);
        System.out.println("After removal..");
        subList.remove("y");
        System.out.println("List : " + list);
        System.out.println("SubList : " + subList);
    }

}
导入javafx.collections.FXCollections;
导入javafx.collections.ListChangeListener;
导入javafx.collections.ObservableList;
公共类子列表绑定{
公共静态void main(字符串[]args){
ObservableList=FXCollections.observableArrayList();
ObservableList子列表=FXCollections.observableArrayList();
列表。添加全部(“a”、“b”、“c”);
子列表addAll(“x”、“y”、“z”);
list.addAll(子列表);
subList.addListener(新ListChangeListener(){
public void onChanged(Change在您的情况下不起作用,因为它需要
observebleList
包含相同的数据

您可以通过使用
datas\u flickr

工作样本

import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;

public class SubListBinding {

    public static void main(String[] args) {
        ObservableList<String> list = FXCollections.observableArrayList();
        ObservableList<String> subList = FXCollections.observableArrayList();
        list.addAll("a", "b", "c");
        subList.addAll("x", "y", "z");
        list.addAll(subList);
        subList.addListener(new ListChangeListener<String>() {
             public void onChanged(Change<? extends String> c) {
                 while (c.next()) {
                     if (c.wasPermutated()) {
                         for (int i = c.getFrom(); i < c.getTo(); ++i) {
                              //permutate
                         }
                     } else if (c.wasUpdated()) {
                              //update item
                     } else {
                         for (String remitem : c.getRemoved()) {
                             list.remove(remitem);
                         }
                         for (String additem : c.getAddedSubList()) {
                             list.add(additem);
                         }
                     }
                 }
             }
         });
        System.out.println("Before removal..");
        System.out.println("List : " + list);
        System.out.println("SubList : " + subList);
        System.out.println("After removal..");
        subList.remove("y");
        System.out.println("List : " + list);
        System.out.println("SubList : " + subList);
    }

}
导入javafx.collections.FXCollections;
导入javafx.collections.ListChangeListener;
导入javafx.collections.ObservableList;
公共类子列表绑定{
公共静态void main(字符串[]args){
ObservableList=FXCollections.observableArrayList();
ObservableList子列表=FXCollections.observableArrayList();
列表。添加全部(“a”、“b”、“c”);
子列表addAll(“x”、“y”、“z”);
list.addAll(子列表);
subList.addListener(新ListChangeListener(){

public void onchange(更改谢谢,但我30秒前才解决问题。:D Sorry谢谢,但我30秒前才解决问题。:D Sorry谢谢,但我30秒前才解决问题。:D Sorry谢谢,但我30秒前才解决问题。:D抱歉