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

如何在JavaFX控制器中为FXML带%的文本绑定资源包值?

解决JavaFX控制器中手动绑定资源包文本的问题

核心原因

FXML中的%key语法是FXMLLoader在加载时自动解析的,但直接调用Label.setText("%grocery")时,JavaFX不会自动识别并解析这个语法,只会把它当作普通字符串处理。

解决方案

方法1:直接从ResourceBundle获取值

在控制器中获取已加载的ResourceBundle,直接用键名获取对应文本:

@FXML
private Label iconLabel;

@Override
public void initialize(URL url, ResourceBundle rb) {
    // 直接通过资源包的getString方法获取对应文本
    iconLabel.setText(rb.getString("grocery"));
}

如果主类加载FXML时需要手动传入资源包,可参考以下代码:

// 主类中加载FXML并传入资源包
ResourceBundle bundle = ResourceBundle.getBundle("your.package.name.Bundle");
FXMLLoader loader = new FXMLLoader(getClass().getResource("your.fxml"), bundle);
Parent root = loader.load();

方法2:复用FXMLLoader的解析逻辑

如果想沿用%key的写法,可以调用FXMLLoader的解析工具方法:

import javafx.fxml.FXMLLoader;

@FXML
private Label iconLabel;
@FXML
private ResourceBundle resources;

@Override
public void initialize(URL url, ResourceBundle rb) {
    // 用FXMLLoader解析带%的字符串
    String resolvedText = FXMLLoader.getValue("%grocery", resources);
    iconLabel.setText(resolvedText);
}

验证资源包配置

确保资源包文件命名符合规范,且键名存在:

  • 默认资源文件:Bundle.properties(包含grocery=Market)
  • 本地化资源文件:如Bundle_zh_CN.properties(包含grocery=超市)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:30:38