关于javaFX中的TableView
来源:互联网 发布:unity编程 编辑:程序博客网 时间:2024/06/04 20:11
javaFX中的TableView相关知识点笔记
VBox.setSpacing(5);
面板的模块之间间隔为5
vbox.setPadding(new Insets(10, 0, 0, 10));
1.padding在CSS中是用来控制元素内边距的。
2.padding如果写1个值,则上下左右4个内边距都是此值
3.padding如果写2个值,则是上下、左右值。
4.padding如果写4个值,则是上、右、下、左值。
5.Insets设置节点外围空白大小
TableView class表单类,管理整个表单(包括TableColumn class和TableCell class)。列表中无数据时,可用setPlaceholder方法来指定在表中要显示的node(节点),默认显示“No content in table”。
TableColumn class表单列表类,管理表单中每一列的列名、内容等。
setVisible()方法,设置列的可见性。
getColumns().addAll()设置嵌套列
第一步:定义数据模型 新建一个类,类中数据域对应TableView中的每一列,例子如下:
private final SimpleStringProperty firstName; private final SimpleStringProperty lastName; private final SimpleStringProperty email;
SimpleStringProperty可以使得TableView实时更新。
TableCell setCellValueFactory方法为每个列指定单元格工厂,单元格工厂通过PropertyValueFactory class实现,该类使用表列的属性值(与新建立的保存数据的类类名相同)作为该类(此处以Person类为例)相应方法的引用,例子如下:
firstNameCol.setCellValueFactory( new PropertyValueFactory<>("firstName"));lastNameCol.setCellValueFactory( new PropertyValueFactory<>("lastName"));emailCol.setCellValueFactory( new PropertyValueFactory<>("email"));
第二步:向数据模型中添加数据 FXCollections包装器方法(如synchronizeObservableList或emptyObservableList)与Collections中的方法具有完全相同的功能,除非它们返回ObservableList,因此适用于需要在输入上使用ObservableList的方法。
ObservableList对象允许跟踪对其元素的任何更改,所以每当数据更改时,TableView内容都会自动更新。
final ObservableList<Person> data = FXCollections.observableArrayList( new Person("Jacob", "Smith", "jacob.smith@example.com"), new Person("Isabella", "Johnson", "isabella.johnson@example.com"), new Person("Ethan", "Williams", "ethan.williams@example.com"), new Person("Emma", "Jones", "emma.jones@example.com"), new Person("Michael", "Brown", "michael.brown@example.com"));
第三步:将数据与列关联 可以使用TableView类的setItems方法将数据添加到表中
table.setItems(data); table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
完整的TableView使用的代码(基础操作)
import javafx.application.Application;import javafx.beans.property.SimpleStringProperty;import javafx.collections.FXCollections;import javafx.collections.ObservableList;import javafx.geometry.Insets;import javafx.scene.Group;import javafx.scene.Scene;import javafx.scene.control.Label;import javafx.scene.control.TableColumn;import javafx.scene.control.TableView;import javafx.scene.control.cell.PropertyValueFactory;import javafx.scene.layout.VBox;import javafx.scene.text.Font;import javafx.stage.Stage;public class TableViewSample extends Application { private final TableView<Person> table = new TableView<>(); private final ObservableList<Person> data = FXCollections.observableArrayList( new Person("Jacob", "Smith", "jacob.smith@example.com"), new Person("Isabella", "Johnson", "isabella.johnson@example.com"), new Person("Ethan", "Williams", "ethan.williams@example.com"), new Person("Emma", "Jones", "emma.jones@example.com"), new Person("Michael", "Brown", "michael.brown@example.com") ); public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { Scene scene = new Scene(new Group()); stage.setTitle("Table View Sample"); stage.setWidth(450); stage.setHeight(500); final Label label = new Label("Address Book"); label.setFont(new Font("Arial", 20)); table.setEditable(true); TableColumn firstNameCol = new TableColumn("First Name"); firstNameCol.setMinWidth(100); firstNameCol.setCellValueFactory( new PropertyValueFactory<>("firstName")); TableColumn lastNameCol = new TableColumn("Last Name"); lastNameCol.setMinWidth(100); lastNameCol.setCellValueFactory( new PropertyValueFactory<>("lastName")); TableColumn emailCol = new TableColumn("Email"); emailCol.setMinWidth(200); emailCol.setCellValueFactory( new PropertyValueFactory<>("email")); table.setItems(data); table.getColumns().addAll(firstNameCol, lastNameCol, emailCol); final VBox vbox = new VBox(); vbox.setSpacing(5); vbox.setPadding(new Insets(10, 0, 0, 10)); vbox.getChildren().addAll(label, table); ((Group) scene.getRoot()).getChildren().addAll(vbox); stage.setScene(scene); stage.show(); } public static class Person { private final SimpleStringProperty firstName; private final SimpleStringProperty lastName; private final SimpleStringProperty email; private Person(String fName, String lName, String email) { this.firstName = new SimpleStringProperty(fName); this.lastName = new SimpleStringProperty(lName); this.email = new SimpleStringProperty(email); } public String getFirstName() { return firstName.get(); } public void setFirstName(String fName) { firstName.set(fName); } public String getLastName() { return lastName.get(); } public void setLastName(String fName) { lastName.set(fName); } public String getEmail() { return email.get(); } public void setEmail(String fName) { email.set(fName); } }}
- 关于javaFX中的TableView
- javafx TableView中的TableColumn如何填充的自带类
- javafx api TableView
- JavaFx TableView个人体会
- JavaFX之TableView
- javafx tableview 示例
- javafx TableView 添加事件
- JavaFx TableView表格
- JavaFX之TableView
- JavaFX学习之道:JavaFX之TableView
- 关于JavaFX
- javafx.scene.control.TableView CONSTRAINED_RESIZE_POLICY
- JavaFX之TableView的使用
- javafx之TableView的FXCSS
- javafx之TableView的TableColumn
- javafx之TableView的TaleCell
- JavaFX之TableView的TableRow
- JavaFX之TableView的MenuButton
- 求两个字符串a,b中的最长公共子串
- linux之sed使用大全
- 云栖大会之行业大咖们如何玩转直播经济
- poj3984 输出路径
- codevs 3305 水果姐逛水果街Ⅱ 题解报告
- 关于javaFX中的TableView
- opencv3.0 均值 标准差 函数 mean meanStdDev
- 数据库表的操作
- awk与sed 合并多行为一行
- Labview2016安装及破解步骤
- 做好职业规划很重要
- 加分二叉树 noip
- 工作学习系列之:spring学习-第一篇
- 最小生成树