我正在用JavaFX作为辅助项目构建一个日志阅读器,当我试图在TableView
上实现过滤时,我走到了死胡同。
我有几个< code >复选框(图片的LHS ),它们基本上充当< code>TableView将显示的内容的过滤器:
单击Submit
按钮后,将打开一个后台线程来读取和分析文件。一旦操作终止,每次读取日志的结果都会插入全局ObservableList
public class Test_Filters extends Application {...
private ObservableList<LogTest> logs = FXCollections.observableArrayList();
...}
我遇到的问题是如何处理:
< li >勾选多个过滤器< code >复选框
的情况。 < li >未选中< code >复选框的情况。
对于1。我在想处理这件事的最好方法是什么。假设我选择了< code>x个过滤器。这意味着我必须从< code > observable list 中过滤出< code>x值:
logTable.setItems(logTable.getItems().filtered(log -> !log.getSource().equals(checkBox.getText())));
您可以使用JavaFX的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);
如果要再次显示所有记录,只需将谓词设置为null
:
items.setPredicate(null);
使用 FilteredList
,您无需重新读取日志记录,因为筛选器会立即应用于现有项目。
我需要一个通过observatelist填充的组合框,其中包含从DB检索的特定数据。这是我的消息来源。 模型 查看 ComboBox由NAME字段填充,listener用于获取相对ID并将其传递给查询,以便在DB上存储数据。 好的,一切似乎都正常,但我有两个问题: > 当用户需要修改此记录时,我需要从DB获取ID并在ComboBox中选择相对名称。我该怎么做? comboBank.set值; 有没
本文向大家介绍system.reactive 过滤可观察值,包括了system.reactive 过滤可观察值的使用技巧和注意事项,需要的朋友参考一下 示例
我正在用一个库编程,我不知道代码,只知道方法,我不能修改它。我试着制作一个“航班”的表格视图,但我不知道如何为每个航班命名(或ID)。有人能帮我吗?谢谢此处有一些代码:
如何搜索/过滤类型字符串数组的可观察性? 例如,我有以下可观察的 现在,我想根据用户在输入文本框中输入的内容来过滤这个可观察的内容。 所以我有以下代码 请注意,我正在寻找客户端解决方案。我已经有了客户端的数据 我还尝试了flatmap操作符来展平数组,但最终还是无法返回字符串数组类型的可观察值。 任何帮助都将不胜感激。提前谢谢。 应用程序。组成部分html 一个pp.component.ts
问题内容: 给定汽车清单(),我可以这样做: 有没有办法我可以从一个到一个序列? 像没有参数的东西 问题答案: 您可以这样映射到: 请注意,flatMapping可能不会保留源可观察的顺序。如果订单对您很重要,请使用。
我正在开发一个功能,我需要根据本地数据库数据过滤掉网络响应数据。 例如,我的网络层返回一个项目列表,我的数据库层返回一个可观察的ID列表。现在,我只想从网络层返回那些id与数据库层响应中的任何人都匹配的对象。 下面的代码从网络获取数据并将结果保存到数据库(缓存)。 我还有一个方法可以返回需要过滤的场馆列表 现在,我如何扩展前面的链,使用getDislikedVinces()observate从网络