为什么JavaFX应用程序和场景生成器显示乱码文本?
以下是我的场景生成器的外观: 这是GUI: 独立场景生成器: 我刚刚从Java SDK演示中运行了以下源代码:为什么JavaFX应用程序和场景生成器显示乱码文本?,java,intellij-idea,javafx,fxml,scenebuilder,Java,Intellij Idea,Javafx,Fxml,Scenebuilder,以下是我的场景生成器的外观: 这是GUI: 独立场景生成器: 我刚刚从Java SDK演示中运行了以下源代码: package sample; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.control.Button; i
package sample;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Button;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
Button btn = new Button();
btn.setText("Say 'Hello World'!");
StackPane root_ctn = new StackPane();
root_ctn.getChildren().add(btn);
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
System.out.println("Hello World!");
}
});
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root_ctn, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
包装样品;
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.fxml.fxmloader;
导入javafx.scene.control.Button;
导入javafx.scene.Parent;
导入javafx.scene.scene;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
导入javafx.stage.stage;
公共类主扩展应用程序{
@凌驾
public void start(Stage primaryStage)引发异常{
父根=FXMLLoader.load(getClass().getResource(“sample.fxml”);
按钮btn=新按钮();
btn.setText(“说‘你好,世界’!”);
StackPane root_ctn=新的StackPane();
root_ctn.getChildren().add(btn);
btn.setOnAction(新的EventHandler)我还没有找到解决方案,但我发现了一个有趣的模式:
在您的Glion Scene Builder屏幕截图上,有书写的Pgy Rtqlgev
,它应该位于New Project
,以及Qrgp Rtqlgev
,它应该位于Open Project
。请注意,每个字母都被字母表中的下一个字母替换
这同样适用于Say'Hello World'!
,它被“翻译”为Lc{'Jgrrq Yqtrf'!
。请注意,字母y
被{/code>替换,在ASCII表中位于y
之后两个位置。有趣的是,字符
和
保持不变
每个字母占用的空间仍然是正确字母的空间,如下图中绿色背景上的正确文本所示:
更新:
您的系统中是否可能缺少字体“Segoe UI”或存在缺陷?例如,您可以在Word中使用该字体
更新:我发现用户面临的另外两个问题也是同样的问题。在这两种情况下,问题似乎都与Segoe UI字体有关:
查看是否有帮助。@Sedrick编辑器已设置为UTF8。无论如何,谢谢!您从未使用从fxml加载的父根目录。这是有意的吗?如果相关,也请显示fxml。该系统的默认区域设置是什么?试着使用-Duser.language=en-Duser.country=US
@Puce运行它。是的,我正在尝试一些代码,所以我加上了我自己的“根”只是为了测试。谢谢,我会添加区域设置,看看它是否有效。你是对的!什么可以解释?我仍在寻找解释。但我很确定cp1252和utf-8之间没有编码问题,因为这些编码在同一位置有受影响的字母。我用另一个观察更新了我的答案。The Segoe UI字体在我的计算机上运行良好,因为我刚刚测试了它。这很奇怪,在其他情况下,Segoe UI是问题所在,请参阅我的更新答案。非常感谢!它与Segoe UI字体有关!我删除了字体系列并安装了一个新的字体系列,现在可以使用了