请帮我。我有以下代码。
public class Main extends Application {
private static Locale locale = new Locale("de", "DE");
private Scene scene;
public static Stage stage;
@Override
public void start(Stage primaryStage) throws Exception {
stage = primaryStage;
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
ResourceBundle bundle = ResourceBundle.getBundle("bundles.lang", locale);
fxmlLoader.setResources(bundle);
Parent root = fxmlLoader.load();
scene = new Scene(root);
stage.setMaximized(true);
stage.setScene(scene);
stage.show();
}
public void reload() throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
fxmlLoader.setResources(ResourceBundle.getBundle("bundles.lang", locale));
Parent root = fxmlLoader.load();
scene = new Scene(root);
stage.setMaximized(true);
stage.setScene(scene);
stage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器类中
public class FXMLDocumentController implements Initializable {
@FXML
AnchorPane root;
@FXML
private void handleChinese(final ActionEvent event) throws IOException {
Main.setLocale(new Locale("zh", "CN")); // change to english
//JavaFXApplication4.stage.close();
Main reload = new Main();
reload.reload();
}
@FXML
private void handleRussian(final ActionEvent event) throws IOException {
Main.setLocale(new Locale("de", "DE")); // change to english
Main reload = new Main();
reload.reload();
}
Run Code Online (Sandbox Code Playgroud)
它可以工作!,但是当更改语言时,我的窗口没有正确显示,这意味着 stage.setMaximized(true)不起作用,我的窗口没有显示为最大化。
为什么不能stage.setMaximized(true)正常工作?
无需创建新场景,只需将 root 设置为前一个场景即可。
public void reload() throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
Parent root = fxmlLoader.load();
stage.getScene().setRoot(root);
// Scene scene = new Scene(root);
// stage.setMaximized(true);
// stage.setScene(scene);
//
// stage.show();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2889 次 |
| 最近记录: |