过滤数据以从javafx中的数据库显示

莱康

我只想在表格视图中显示某些信息,例如数据库中的“男性”人。我只是在使用javafx。感谢您的帮助。

这是我目前的桌子 在此处输入图片说明

我想过滤表,以便表中仅显示具有“订单状态:PAID”的行。

布莱恩

如果可以使用Java 8,则可以使用内置的FilteredList和谓词。这是我为测试正则表达式过滤而编写的内容。我对其进行了一些修改,使其更像您的示例,并在需要时使用javafx 2.2。只需更改一些注释行即可使用Java 8。

import javafx.application.Application;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TableTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        ObservableList<LineItem> items = FXCollections.observableArrayList();
        items.addAll(new LineItem("hello",123.45),
                     new LineItem("paid in full",0.01),
                     new LineItem("paid",0.01),
                     new LineItem("due",0.01),
                     new LineItem("paid",0.01));

        //for java8
        //FilteredList<LineItem> filteredItems = new FilteredList(items, e->true);

        //not java8
        ObservableList<LineItem> filteredItems = FXCollections.observableArrayList(items);

        TableView tableView = new TableView(filteredItems);

        TableColumn<LineItem,String> descCol = new TableColumn<>("desc");
        descCol.setCellValueFactory(new PropertyValueFactory<>("desc"));

        TableColumn<LineItem, Double> amountCol = new TableColumn<>("amount");
        amountCol.setCellValueFactory(new PropertyValueFactory<>("amount"));

        tableView.getColumns().addAll(descCol,amountCol);

        TextField filterText = new TextField();
        filterText.setPromptText("type filter and press enter");
        filterText.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent event) {
            //normal java8
            //filteredItems.setPredicate(li -> li.desc.getValue().contains(filterText.getText()));
            //regex java 8
            //filteredItems.setPredicate(li -> li.desc.getValue().matches("(?i)"+filterText.getText()));
            //not javafx 8
                filteredItems.clear();
                for (LineItem li: items)
                    if (li.desc.getValue().contains(filterText.getText()))
                        filteredItems.add(li);
            }
        });

        VBox root = new VBox();
        root.getChildren().addAll(tableView, filterText);
        Scene scene = new Scene(root, 300, 300);

        primaryStage.setTitle("Filter table test");
        primaryStage.setScene(scene);
        primaryStage.show();
    }


    public class LineItem {

        private final StringProperty desc = new SimpleStringProperty();
        private final DoubleProperty amount = new SimpleDoubleProperty();

        public StringProperty descProperty() {return desc;}
        public DoubleProperty amountProperty() {return amount;}

        public LineItem(String dsc, double amt) {
            desc.set(dsc); amount.set(amt);
        }
    }

}

要做,有一种绑定predicateProperty的方法,但我不知道。

编辑:如果要绑定,而不是ActionEvent的处理程序,请执行类似

filteredItems.predicateProperty().bind(
        Bindings.createObjectBinding(() -> 
                li -> li.desc.getValue().contains(filterText.getText()), 
             filterText.textProperty())
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

laravel 5.2显示数据以从数据库中查看

来自分类Dev

JavaFX动态TableView不显示数据库中的数据

来自分类Dev

javafx Tableview不显示数据库中的数据

来自分类Dev

从数据库获取特定年份的数据以在gridview中显示-MVC

来自分类Dev

如何编写应该从数据库获取数据以在C#中的表单上显示的方法

来自分类Dev

如何显示数据以准确查看它在数据库中的样子?

来自分类Dev

如何过滤将显示在datagridview中的数据库?

来自分类Dev

从数据库表中检索数据以填充链接

来自分类Dev

从数据库加载数据以在qml中公开

来自分类Dev

按特定ID过滤数据以在ReactJS中显示

来自分类Dev

如何使用Struts编程从数据库中打印数据以及如何在FTL页上显示

来自分类Dev

使用 Spring MVC 从数据库获取数据以显示在下拉列表中,如国家、州、城市

来自分类Dev

如何在 Xamarin Forms 的文本字段中显示数据库中注册的数据以进行更新

来自分类Dev

如何...显示数据库中的数据

来自分类Dev

在ListView中显示数据库数据

来自分类Dev

显示数据库中的数据?

来自分类Dev

无法显示数据库中的数据

来自分类Dev

未显示数据库中的数据

来自分类Dev

过滤数据库

来自分类Dev

从数据库过滤数据

来自分类Dev

从数据库查询中过滤值

来自分类Dev

无法从数据库中过滤

来自分类Dev

如何从 Firebase 数据库过滤数据并将其显示到 android recyclerview 中?

来自分类Dev

显示数据库

来自分类Dev

从数据库中获取数据并过滤结果

来自分类Dev

如何正确过滤sqlite数据库中的数据?

来自分类Dev

将数据插入数据库后,无法在 Laravel 中显示数据库中的数据

来自分类Dev

保存并显示数据库中的图像

来自分类Dev

在CodeIgniter中显示数据库记录

Related 相关文章

  1. 1

    laravel 5.2显示数据以从数据库中查看

  2. 2

    JavaFX动态TableView不显示数据库中的数据

  3. 3

    javafx Tableview不显示数据库中的数据

  4. 4

    从数据库获取特定年份的数据以在gridview中显示-MVC

  5. 5

    如何编写应该从数据库获取数据以在C#中的表单上显示的方法

  6. 6

    如何显示数据以准确查看它在数据库中的样子?

  7. 7

    如何过滤将显示在datagridview中的数据库?

  8. 8

    从数据库表中检索数据以填充链接

  9. 9

    从数据库加载数据以在qml中公开

  10. 10

    按特定ID过滤数据以在ReactJS中显示

  11. 11

    如何使用Struts编程从数据库中打印数据以及如何在FTL页上显示

  12. 12

    使用 Spring MVC 从数据库获取数据以显示在下拉列表中,如国家、州、城市

  13. 13

    如何在 Xamarin Forms 的文本字段中显示数据库中注册的数据以进行更新

  14. 14

    如何...显示数据库中的数据

  15. 15

    在ListView中显示数据库数据

  16. 16

    显示数据库中的数据?

  17. 17

    无法显示数据库中的数据

  18. 18

    未显示数据库中的数据

  19. 19

    过滤数据库

  20. 20

    从数据库过滤数据

  21. 21

    从数据库查询中过滤值

  22. 22

    无法从数据库中过滤

  23. 23

    如何从 Firebase 数据库过滤数据并将其显示到 android recyclerview 中?

  24. 24

    显示数据库

  25. 25

    从数据库中获取数据并过滤结果

  26. 26

    如何正确过滤sqlite数据库中的数据?

  27. 27

    将数据插入数据库后,无法在 Laravel 中显示数据库中的数据

  28. 28

    保存并显示数据库中的图像

  29. 29

    在CodeIgniter中显示数据库记录

热门标签

归档