目前,當我想爲特定的窗格設置翻譯包時,我必須在加載之前執行此操作。讓我們考慮一個簡單的例子:是否可以在控制器類中設置Pane的recoures?
Bundle_en.properties
key=Sample Text
MainApplication.java
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("sample.fxml"));
fxmlLoader.setResources(ResourceBundle.getBundle("bundles.Bundle",new Locale("en","EN")));
Parent root = fxmlLoader.load();
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
現在我可以從包內使用的名稱:
sample.fxml
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
<Label text="%key"/>
</GridPane>
問題:
是否可以將控制器內的資源設置爲initialize()方法?
Controller.java
public class Controller {
@FXML
private void initialize() {
// setting resources here
}
}