TornadoFX Controls 使用教程
项目介绍
TornadoFX Controls 是一个为 JavaFX 提供 CSS 可样式化控件的开源项目。该项目旨在扩展 JavaFX 的功能,使其控件更加灵活和可定制。通过 TornadoFX Controls,开发者可以轻松地为 JavaFX 应用程序添加自定义样式和功能。
项目快速启动
安装依赖
首先,确保你的项目中包含了 TornadoFX Controls 的依赖。你可以通过 Maven 或 Gradle 来添加依赖。
Maven
<dependency>
<groupId>no.tornado</groupId>
<artifactId>tornadofx-controls</artifactId>
<version>1.0.4</version>
</dependency>
Gradle
compile 'no.tornado:tornadofx-controls:1.0.4'
创建一个简单的 JavaFX 应用程序
以下是一个简单的 JavaFX 应用程序示例,展示了如何使用 TornadoFX Controls 中的 TableView
控件。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage primaryStage) {
TableView<Person> tableView = new TableView<>();
TableColumn<Person, Integer> idColumn = new TableColumn<>("Id");
idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));
TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
tableView.getColumns().addAll(idColumn, nameColumn);
tableView.getItems().addAll(
new Person(1, "Alice"),
new Person(2, "Bob")
);
Scene scene = new Scene(tableView, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("TornadoFX Controls Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
public static class Person {
private final Integer id;
private final String name;
public Person(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
}
}
应用案例和最佳实践
自定义样式
TornadoFX Controls 允许开发者通过 CSS 来定制控件的样式。以下是一个简单的 CSS 示例,展示了如何为 TableView
添加自定义样式。
.table-view {
-fx-background-color: #f4f4f4;
}
.table-view .column-header {
-fx-background-color: #d3d3d3;
}
.table-view .table-cell {
-fx-alignment: center;
}
动态数据绑定
TornadoFX Controls 支持动态数据绑定,使得控件能够实时响应数据变化。以下是一个示例,展示了如何使用动态数据绑定。
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
public class Person {
private final SimpleIntegerProperty id;
private final SimpleStringProperty name;
public Person(Integer id, String name) {
this.id = new SimpleIntegerProperty(id);
this.name = new SimpleStringProperty(name);
}
public Integer getId() {
return id.get();
}
public void setId(Integer id) {
this.id.set(id);
}
public String getName() {
return name.get();
}
public void setName(String name) {
this.name.set(name);
}
}
典型生态项目
TornadoFX Controls