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

MaterialFX floatingText属性异常:SceneBuilder正常IntelliJ运行显示异常

MaterialFX MFXTextField floatingText 运行时不显示问题

我在使用MaterialFX的MFXTextField组件时遇到了一个问题:设置的floatingText属性在程序运行后始终处于隐藏状态,但同样的FXML代码在SceneBuilder中预览时显示完全正常。

我的FXML代码如下:

<MFXTextField fx:id="username" floatMode="BORDER" floatingText="username" layoutX="10.0" layoutY="10.0" prefHeight="24.0" prefWidth="361.0">
    <VBox.margin>
        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
    </VBox.margin>
</MFXTextField>

场景差异:SceneBuilder预览时浮动文本正常显示,IntelliJ运行加载后浮动文本消失不见。

以下是几个可尝试的解决方案:

  • 统一MaterialFX版本:SceneBuilder内置的MaterialFX版本可能和项目依赖的版本不一致,旧版本可能存在floatMode="BORDER"的渲染bug。建议将项目依赖的MaterialFX升级到最新稳定版(如11.16.0及以上)。
  • 确保样式表正确加载:MaterialFX组件需要依赖自带的CSS样式才能正常渲染浮动文本。可以在Application类中添加样式加载代码:
    @Override
    public void start(Stage stage) throws Exception {
        Scene scene = new Scene(FXMLLoader.load(getClass().getResource("your-fxml-file.fxml")));
        scene.getStylesheets().add(MaterialFXStylesheets.load("materialfx.css").toExternalForm());
        stage.setScene(scene);
        stage.show();
    }
    
  • 调整组件高度:当前设置的prefHeight="24.0"高度过小,可能导致浮动文本没有足够的显示空间。尝试将prefHeight调整为30.0或更高,观察浮动文本是否正常显示。
  • 手动触发浮动状态:如果上述方法无效,可以在控制器初始化时手动触发浮动文本的状态更新:
    @FXML
    private MFXTextField username;
    
    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        // 通过焦点切换触发浮动文本更新
        username.requestFocus();
        username.getParent().requestFocus();
        // 或者直接调用组件的状态更新方法
        username.updateFloatingTextState();
    }
    

内容的提问来源于stack exchange,提问作者Tushar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:22:39