javafx如何调节按钮位置_JavaFX 表视图

本文介绍了如何在JavaFX中使用TableView、TableColumn和TableCell创建和操作表格数据,包括设置列排序、调整列大小、隐藏列、创建嵌套列以及向表视图中添加新行的方法。示例代码详细展示了如何实现这些功能,包括创建JavaFX JavaBean以保存行数据并使用ObservableList进行动态更新。
摘要由CSDN通过智能技术生成
c2bbf9309e5947d8f9720707011f0dc8.png

我们可以使用来自JavaFX API的TableView,TableColumn和TableCell类以表格形式表示数据。

通过实现数据模型和应用单元工厂来填充表中的数据。

表类可以按列排序数据,并在必要时调整列大小。

创建表

表控件是通过实例化TableView类创建的。

TableView table = new TableView();table.setEditable(true);

然后使用TableColumn类创建三个列。TableView类的getColumns方法将创建的列添加到表中。

TableColumn firstNameCol = new TableColumn("First Name");TableColumn lastNameCol = new TableColumn("Last Name");TableColumn emailCol = new TableColumn("Email"); table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);

我们可以通过调用setVisible方法隐藏列。

aColumn.setVisible(false).

以下代码创建一个表。

import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.TableColumn;import javafx.scene.control.TableView;import javafx.scene.layout.StackPane;import javafx.stage.Stage;public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { TableView table = new TableView(); table.setEditable(true); TableColumn firstNameCol = new TableColumn("First Name"); TableColumn lastNameCol = new TableColumn("Last Name"); TableColumn emailCol = new TableColumn("Email");  table.getColumns().addAll(firstNameCol, lastNameCol, emailCol); emailCol.setVisible(false); StackPane root = new StackPane(); root.getChildren().add(table); primaryStage.setScene(new Scene(root, 200, 250)); primaryStage.show(); }}

上面的代码生成以下结果。

fcde90d6d879e23f5d717e1d0a4793a8.png

嵌套标头

使用JavaFX表视图,我们可以轻松创建嵌套列。

假设我们要将两个子列添加到地址列。

TableColumn cityCol = new TableColumn("City");TableColumn stateCol = new TableColumn("State");

然后我们将新创建的列添加到地址列。

addressCol.getColumns().addAll(cityCol, stateCol);

完整的源代码

import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.TableColumn;import javafx.scene.control.TableView;import javafx.scene.layout.StackPane;import javafx.stage.Stage;public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { TableView table = new TableView(); table.setEditable(true); TableColumn firstNameCol = new TableColumn("First Name"); TableColumn lastNameCol = new TableColumn("Last Name"); TableColumn addressCol = new TableColumn("Email");  table.getColumns().addAll(firstNameCol, lastNameCol, addressCol); TableColumn cityCol = new TableColumn("City"); TableColumn stateCol = new TableColumn("State"); addressCol.getColumns().addAll(cityCol, stateCol);  StackPane root = new StackPane(); root.getChildren().add(table); primaryStage.setScene(new Scene(root, 200, 250)); primaryStage.show(); }}

上面的代码生成以下结果。

3fd16feef955a7fd1698e7a58e72c803.png

添加新行

以下代码显示如何向表视图中添加数据。 创建JavaFX JavaBean以保存单个行的值。 表中的每一行代表一个名字为姓氏的人。 JavaFX JavaBean称为Person,它有两个字段,名字和姓氏。 Person为这两个值提供了可绑定的属性。

在UI逻辑中,它使用ObservableList来保存表视图的值。 ObservableList中的每个元素都是一个Person对象。

在按钮事件处理程序中,它创建一个新的具有硬编码的名字和姓氏的人,然后添加到ObservableList。

import javafx.application.Application;import javafx.beans.property.SimpleStringProperty;import javafx.collections.FXCollections;import javafx.collections.ObservableList;import javafx.event.ActionEvent;import javafx.geometry.Insets;import javafx.scene.Group;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.TableColumn;import javafx.scene.control.TableView;import javafx.scene.control.cell.PropertyValueFactory;import javafx.scene.layout.HBox;import javafx.scene.layout.VBox;import javafx.stage.Stage;public class Main extends Application {  private final TableView table = new TableView<>(); private final ObservableList data = FXCollections.observableArrayList(new Person("A
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值