{"id":19195836,"url":"https://github.com/evgen2sat/jfxtableview","last_synced_at":"2025-05-09T00:32:59.296Z","repository":{"id":57733154,"uuid":"293735706","full_name":"Evgen2sat/JFXTableView","owner":"Evgen2sat","description":"Advanced JavaFx TableView with filtering and total functions","archived":false,"fork":false,"pushed_at":"2022-02-18T05:36:01.000Z","size":944,"stargazers_count":11,"open_issues_count":7,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-20T09:43:50.432Z","etag":null,"topics":["javafx","javafx-components","javafx-tableview","tablefilter","tableview"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Evgen2sat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-08T07:34:56.000Z","updated_at":"2024-12-07T14:05:34.000Z","dependencies_parsed_at":"2022-09-26T22:11:17.119Z","dependency_job_id":null,"html_url":"https://github.com/Evgen2sat/JFXTableView","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evgen2sat%2FJFXTableView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evgen2sat%2FJFXTableView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evgen2sat%2FJFXTableView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Evgen2sat%2FJFXTableView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Evgen2sat","download_url":"https://codeload.github.com/Evgen2sat/JFXTableView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253171166,"owners_count":21865275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javafx","javafx-components","javafx-tableview","tablefilter","tableview"],"created_at":"2024-11-09T12:11:44.478Z","updated_at":"2025-05-09T00:32:59.216Z","avatar_url":"https://github.com/Evgen2sat.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.evgen2sat/JFXTableView/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.evgen2sat/JFXTableView)\n\n# JFXTableView\nAdvanced JavaFx TableView with filtering and total functions.\n\n## Description\nThe implementation of the filter is easy. You wrap your `TableView` with the `JFXTableView`\nand add the columns which wrap `JFXTableColumn`.\n\nThere are the following column implementations:\n\n* `JFXBooleanTableColumn`\n* `JFXDoubleTableColumn`\n* `JFXFloatTableColumn`\n* `JFXIntegerTableColumn`\n* `JFXLocalDateTableColumn`\n* `JFXLocalDateTimeTableColumn`\n* `JFXLocalTimeTableColumn`\n* `JFXLongTableColumn`\n* `JFXStringTableColumn`\n* `JFXBigDecimalTableColumn`\n\nYou can create your own column implementation by inheriting from the abstract `JFXTableColumn` class.\n\nYou can turn off filtering on a table by passing `false` to the `setAllowFiltering` method. Example:\n\n```\njfxTableView.setAllowFiltering(false);\n```\n\nThe following types of filtering are supported (The filter types available depend on the choice of the `JFXTableColumn` implementation):\n\n* `Equals`\n* `Not equals`\n* `Greather or equals than`\n* `Greather than`\n* `Less or equals than`\n* `Less than`\n* `Start with`\n* `End with`\n* `Contains`\n* `Not contains`\n* `Regular expression`\n* `Custom filtering`\n\nThe following types of column totals are supported (The totals types available depend on the choice of the `JFXTableColumn` implementation):\n\n* `Sum`\n* `Minimum`\n* `Maximum`\n* `Average`\n\n## Features\nJFXTableView supports the following features:\n\n* Filtering rows by columns (multiple filter option with `Custom filtering` by column)\n* Totals by column\n* Count rows\n* Copy cell value from context menu\n* Export to file\n* Localization and internationalization\n\n## Get Started\nCreate table `JFXTableView` and columns `JFXTableColumn`:\n\n```\n//custom model for JFXTableView\nclass Model {\n    private SimpleBooleanProperty boolValue = new SimpleBooleanProperty();\n    private SimpleDoubleProperty doubleValue = new SimpleDoubleProperty();\n    private SimpleFloatProperty floatValue= new SimpleFloatProperty();\n    private SimpleIntegerProperty integerValue = new SimpleIntegerProperty();\n    private SimpleLongProperty longValue = new SimpleLongProperty();\n    private SimpleStringProperty stringValue = new SimpleStringProperty();\n    private SimpleObjectProperty\u003cLocalDate\u003e localDateValue = new SimpleObjectProperty\u003c\u003e();\n    private SimpleObjectProperty\u003cLocalDateTime\u003e localDateTimeValue = new SimpleObjectProperty\u003c\u003e();\n    private SimpleObjectProperty\u003cLocalTime\u003e localTimeValue = new SimpleObjectProperty\u003c\u003e();\n    \n    //getters and setters\n}\n\n//initialize JFXTableView\n//background is StackPane (usually this is Node on which the controls are located in the scene), which is necessary for the darkening effect when opening dialog boxes\nJFXTableView\u003cModel\u003e jfxTableView = new JFXTableView\u003c\u003e(background);\n\n//initialize JFXTableColumns\nJFXTableColumn\u003cModel, Boolean\u003e boolColumn = new JFXBooleanTableColumn\u003c\u003e(\"Bool value\");\nboolColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"boolValue\"));\n\nJFXTableColumn\u003cModel, Double\u003e doubleColumn = new JFXDoubleTableColumn\u003c\u003e(\"Double value\");\ndoubleColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"doubleValue\"));\n\nJFXTableColumn\u003cModel, Float\u003e floatColumn = new JFXFloatTableColumn\u003c\u003e(\"Float value\");\nfloatColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"floatValue\"));\n\nJFXTableColumn\u003cModel, Integer\u003e integerColumn = new JFXIntegerTableColumn\u003c\u003e(\"Integer value\");\nintegerColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"integerValue\"));\n\nJFXTableColumn\u003cModel, Long\u003e longColumn = new JFXLongTableColumn\u003c\u003e(\"Long value\");\nlongColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"longValue\"));\n\nJFXTableColumn\u003cModel, LocalDate\u003e localDateColumn = new JFXLocalDateTableColumn\u003c\u003e(\"LocalDate value\");\nlocalDateColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"localDateValue\"));\n\nJFXTableColumn\u003cModel, LocalDateTime\u003e localDateTimeColumn = new JFXLocalDateTimeTableColumn\u003c\u003e(\"LocalDateTime value\");\nlocalDateTimeColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"localDateTimeValue\"));\n\nJFXTableColumn\u003cModel, LocalTime\u003e localTimeColumn = new JFXLocalTimeTableColumn\u003c\u003e(\"LocalTime value\");\nlocalTimeColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"localTimeValue\"));\n\nJFXTableColumn\u003cModel, String\u003e stringColumn = new JFXStringTableColumn\u003c\u003e(\"String value\");\nstringColumn.setCellValueFactory(new PropertyValueFactory\u003c\u003e(\"stringValue\"));\n\n//add columns to JFXTableView\njfxTableView.getColumns().addAll(boolColumn, doubleColumn, floatColumn, integerColumn, longColumn,\n        localDateColumn, localDateTimeColumn, localTimeColumn, stringColumn);\n\n//initialize data\nObservableList\u003cModel\u003e data = FXCollections.observableArrayList();\nModel row1 = new Model();\nrow1.setBoolValue(true);\nrow1.setDoubleValue(1);\nrow1.setFloatValue(2);\nrow1.setIntegerValue(3);\nrow1.setLocalDateTimeValue(LocalDateTime.now());\nrow1.setLocalDateValue(LocalDate.now());\nrow1.setLocalTimeValue(LocalTime.now());\nrow1.setLongValue(4);\nrow1.setStringValue(\"string\");\ndata.add(row1);\n\n//set data to JFXTableView\njfxTableView.setData(data);\n```\n\nResult:\n![Result](https://i.imgur.com/WVwTks5.jpg)\n\n`background` is StackPane (usually this is Node on which the controls are located in the scene), which is necessary for the darkening effect when opening dialog boxes. For example with shadow:\n\n![With Shadow](https://i.imgur.com/ztbHP5i.jpg)\n\nWithout shadow:\n\n![Without Shadow](https://i.imgur.com/a2lTXLb.jpg)\n\n## Numbered rows\nFirst column used for display numbered rows. Unvisible by default, use setVisibleNumberedRowsColumn method for table.\n\n```\n//set visible numbered rows column for JFXTableView\njfxTableView.setVisibleNumberedRowsColumn();\n```\n\n## Export to file\nFirst (or second if numbered rows visible) column have burger menu button. Use popup action for export data to file.\n\nBy default export data to CSV file, but you can write your own implementation and pass a reference to the method in `jfxTableView.setExportDataAction` (To get data from the table use the `jfxTableView.getDataForExport()` method).\n\n## Localization and internationalization\nFor localization and internationalization use Resource bundle `message`. Available by default `en` and `ru_RU`.\n\n## Credits\n* [FontAwesomeFX](https://bitbucket.org/Jerady/fontawesomefx)\n* [JFoenix](https://github.com/jfoenixadmin/JFoenix)\n* [RxJava](https://github.com/ReactiveX/RxJava)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevgen2sat%2Fjfxtableview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevgen2sat%2Fjfxtableview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevgen2sat%2Fjfxtableview/lists"}