如何在FXML文档中为视图提供不同的语言以支持许多国家?
用ResourceBundle
小号来存储区域设置相关的文本,并使用访问包中的数据"%resourceKey"
。
具体来说,为您要支持的每种语言创建文本文件,并将其放在类路径中。该对的JavadocResourceBundle
对命名方案的细节,但你应该有一个默认包通过定义BaseName.properties
和捆绑其他语言和变形的定义BaseName_xx.properties
。例如(resources
目录位于类路径的根目录中):
资源/UIResources.properties:
greeting = Hello
资源/UIResources_fr.properties:
greeting = Bonjour
然后在您的FXML文件中,您可以执行
<Label text = "%greeting" />
传递ResourceBundle
给FXMLLoader
做:
ResourceBundle bundle = ResourceBundle.getBundle("resources.UIResources");
FXMLLoader loader = new FXMLLoader(getClass().getResource("/path/to/FXML.fxml"), bundle);
Parent root = loader.load();
此代码将加载与默认语言环境(通常是您在操作系统级别设置的语言环境)相对应的资源包,如果找不到对应的资源束,则回退到默认语言。如果要强制它使用特定的捆绑包,则可以执行
ResourceBundle bundle = ResourceBundle.getBundle("/resources/UIResources", new Locale("fr"));
最后,如果您需要访问FXML控制器中的资源包,则可以将其注入type ResourceBundle
和name 字段中resources
:
public class MyController {
@FXML
private ResourceBundle resources ;
// ...
}
我正在创建一个JavaFX8应用程序,并且在一个组合框中(我实际上使用了JFoenix JavaFX Material Design库中等效的JavaFX控件),我希望用字符串值填充它的项,但是我希望这些值来自我已经创建的资源包。当我在场景生成器中预览FXML文档时,在场景生成器预览器中不会出现对组合框所需的更改。下面是FXML代码。 我指出这些值应该来自资源包,但它们不是从资源包加载的。下面是预
Tea 语言是一个和 运行效率接近 C++、开发效率超越 Java 的编程语言。 编译为原生机器码(汇编),兼容主要操作系统和平台。 现代化语言,支持 GC、面向对象、函数式编程、类型推导等流行语言特性。 C 风格,Java 用户可以很快上手。更实用,更适合敏捷开发。 国产。全中文支持。
我是JavaFX的新手,我想知道如何支持多种语言字体(即中文、英文、印地语等)。 当前,当我将文本字段设置为使用支持css中拉丁字符的字体家族时,来自其他语言的字符将无法正确呈现。 这是我的CSS: 我意识到JavaFX css不允许为字体堆栈和后退字体使用逗号分隔字体,如下所示: 有没有另外一种支持多种语言打字的方法?我的项目要求用户以多种语言输入文本,我需要确保字体嵌入到.jar中,这样每个用
我的代码中有以下扩展的JavaFX对象: 它使用我编写的这个客户Java类来跟踪Tile位置: 现在,我想构建一个场景(通过JavaFX场景生成器),它使用一个网格窗格,每个单元格中都有一个平铺对象。我决定首先在scene Builder中构建一个场景,使用JavaFX矩形对象而不是平铺,然后手动编辑.fxml文件并将其中的矩形更改为平铺对象。问题是Intellij现在告诉我FXML文件中的平铺对
我对C#很陌生,我需要使用GRPC而不是TLS。 作为预演,我将修改主grpc repo中提供的示例,以使用TLS。为了做到这一点,我找到了另一个看起来很好的答案:如何为gRPC启用服务器端SSL?。然而,我得到一个错误< code >未处理的异常:Grpc。core . RPC exception:Status(Status code =不可用,Detail="Connect Failed")(
我正在IntelliJ中打开新的JavaFX项目,我安装了JDK的所有必要文件,但是在fxml文件中有多个错误“意外令牌”。打开新的javafx项目和fxml文件后立即显示此错误(这意味着我没有从基本fxml标记中添加或删除任何内容)。我能做什么呢?