Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaFX中使用复选框筛选ObservableList_Java_Javafx_Observablelist - Fatal编程技术网

在JavaFX中使用复选框筛选ObservableList

在JavaFX中使用复选框筛选ObservableList,java,javafx,observablelist,Java,Javafx,Observablelist,我正在用JavaFX作为一个辅助项目构建一个日志读取器,当我试图在TableView上实现过滤时,我已经陷入了死胡同 我所拥有的是一些复选框es(图片的左侧),它们基本上充当表格视图将显示的内容的过滤器: 单击Submit按钮后,将打开一个后台线程来读取和解析文件。一旦操作终止,每次日志读取的结果将插入全局可观察列表中: logTable.setItems(logTable.getItems().filtered(log -> !log.getSource().equals(checkB

我正在用JavaFX作为一个辅助项目构建一个日志读取器,当我试图在
TableView
上实现过滤时,我已经陷入了死胡同

我所拥有的是一些
复选框
es(图片的左侧),它们基本上充当
表格视图
将显示的内容的过滤器:

单击
Submit
按钮后,将打开一个后台线程来读取和解析文件。一旦操作终止,每次日志读取的结果将插入全局
可观察列表中:

logTable.setItems(logTable.getItems().filtered(log -> !log.getSource().equals(checkBox.getText())));
您可以使用JavaFX,它接受。您可以更新每个过滤器上的谓词,并根据需要组合它们

 FilteredList<LogTest> items = new FilteredList<>(originalItems);
 tableView.setItems(items);

 ... on update of filter UI items
 Predicate<LogTest> containsFoo = i -> i.getName().contains("foo");
 Predicate<LogTest> isSevere = i -> i.getLevel() == Level.SEVERE;
 Predicate<LogTest> filter = containsFoo.or(isSevere);

 items.setPredicate(filter);
使用
FilteredList
无需重新读取日志记录,因为过滤器会立即应用于现有项目

 FilteredList<LogTest> items = new FilteredList<>(originalItems);
 tableView.setItems(items);

 ... on update of filter UI items
 Predicate<LogTest> containsFoo = i -> i.getName().contains("foo");
 Predicate<LogTest> isSevere = i -> i.getLevel() == Level.SEVERE;
 Predicate<LogTest> filter = containsFoo.or(isSevere);

 items.setPredicate(filter);
 items.setPredicate(null);