如何让Locale.setDefault()在我的JavaFX应用程序中工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让Locale.setDefault()在我的JavaFX应用程序中工作相关的知识,希望对你有一定的参考价值。

我正在开发一个项目,如果Locale.getDefault()调用返回的不是我自己的语言环境,则需要测试本地化是否正常。我遇到过使用Locale.setDefault()来设置测试的默认语言环境的例子,但它在我的代码中不起作用。我一直在收到错误。

Locale.setDefault(new Locale("es"));

根据我的理解,上面的行应该将默认语言环境设置为西班牙语。相反,我在Netbeans内部收到一个错误,即错误的类型开始。我不确定是什么导致这个或者我需要在我的代码中的其他地方设置默认语言环境。以下是该行代码之前的所有内容

import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;

/**
* FXML Controller class
*
* @author Aaron
*/
public class FXMLDocumentController implements Initializable 
{
    Locale.setDefault(new Locale("es"));

非常感谢任何帮助

答案

这条线

Locale.setDefault(new Locale("es"));

未包含在类文件的可执行部分中。由于它是方法调用而不是赋值,因此需要在方法或构造函数中。如果要在加载类时运行它,请将其包装在静态块中:

static {
    Locale.setDefault(new Locale("es"));
}

由于这是一个FXML控制器类,因此您也可以将它放在initialize方法中。

@FXML
void initialize() {
    Locale.setDefault(new Locale("es"));
    ...
}

以上是关于如何让Locale.setDefault()在我的JavaFX应用程序中工作的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JVM 中设置默认语言环境?

解析浮点数时字符串的 NumberFormatException

getRelativeTimeSpanString 的默认语言环境

Swing 中的本地化加速器(JMenuItem 热键)

更改运行时权限的语言

将应用语言更改为设备语言更改