如何在基于Maven的JavaFX项目(含FXML)中使用BootstrapFX?
在IntelliJ中创建集成BootstrapFX的JavaFX项目(含FXML与控制器配置)
1. 添加BootstrapFX依赖
根据项目构建工具,添加对应依赖:
Maven(pom.xml)
<dependency> <groupId>org.kordamp.bootstrapfx</groupId> <artifactId>bootstrapfx-core</artifactId> <version>0.4.0</version> <!-- 使用最新稳定版 --> </dependency>
Gradle(build.gradle)
implementation 'org.kordamp.bootstrapfx:bootstrapfx-core:0.4.0'
模块化项目(module-info.java)
如果是Java模块化项目,需在module-info.java中声明依赖:
module your.module.name { requires javafx.controls; requires javafx.fxml; requires org.kordamp.bootstrapfx.core; // 允许FXML访问控制器所在包 opens your.package.name to javafx.fxml; exports your.package.name; }
2. 编写FXML文件
在FXML中直接使用BootstrapFX的控件(如BsButton、BsTextField等),需导入对应控件类。示例main-view.fxml:
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.VBox?> <?import org.kordamp.bootstrapfx.scene.control.BsButton?> <?import javafx.scene.control.Label?> <VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1" fx:controller="your.package.name.MainController"> <Label fx:id="demoLabel" text="BootstrapFX + FXML Demo"/> <!-- 使用Bootstrap样式的按钮 --> <BsButton text="Primary Button" styleClass="btn-primary"/> <BsButton text="Success Button" styleClass="btn-success" onAction="#handleButtonClick"/> </VBox>
styleClass属性对应Bootstrap的按钮样式(如btn-primary、btn-success、btn-warning等)fx:controller指定该FXML对应的控制器类
3. 编写控制器类
创建控制器类,通过@FXML注解注入FXML中的控件,并编写事件处理方法:
package your.package.name; import javafx.fxml.FXML; import javafx.scene.control.Label; import org.kordamp.bootstrapfx.scene.control.BsButton; public class MainController { @FXML private BsButton successButton; @FXML private Label demoLabel; // 对应FXML中onAction="#handleButtonClick"的方法 @FXML private void handleButtonClick() { demoLabel.setText("按钮已点击!"); // 动态修改按钮样式 successButton.setStyleClass("btn-warning"); } }
4. 编写启动类
在启动类中加载FXML文件,而非直接在start()方法中构建UI:
package your.package.name; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.stage.Stage; import java.io.IOException; public class MainApp extends Application { @Override public void start(Stage stage) throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(MainApp.class.getResource("main-view.fxml")); Scene scene = new Scene(fxmlLoader.load(), 320, 240); // 全局加载BootstrapFX样式表(可选,部分控件需要此样式) scene.getStylesheets().add("org/kordamp/bootstrapfx/bootstrapfx.css"); stage.setTitle("BootstrapFX Demo"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(); } }
注意事项
- 确保FXML文件路径正确:如果和启动类同包,直接用文件名即可;如果在resources下的其他目录,需调整getResource的路径
- 控件的全类名需正确,BootstrapFX的控件都在
org.kordamp.bootstrapfx.scene.control包下 - 若使用最新版JavaFX,注意BootstrapFX的版本兼容性
内容的提问来源于stack exchange,提问作者Francesco Antoni
相关产品推荐
相关产品推荐

