You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:01:38