Java 如何在文本区域打印文件内容?

Java 如何在文本区域打印文件内容?,java,javafx,Java,Javafx,我想将我的文件内容打印到我的jfxtarea中,但输出不完全相同 这是文件内容: 这是我的JavaFX程序的输出: 这是我的代码: try { InputStream inputstream = new FileInputStream("output.txt"); int data = inputstream.read(); while (data != -1) { char aChar = (char) data; out.appe

我想将我的文件内容打印到我的
jfxtarea
中,但输出不完全相同

这是文件内容:

这是我的JavaFX程序的输出:

这是我的代码:

try {
    InputStream inputstream = new FileInputStream("output.txt");
    int data = inputstream.read();

    while (data != -1) {
        char aChar = (char) data;
        out.appendText(String.valueOf(aChar));
        System.out.print(aChar);
        data = inputstream.read();
    }

    inputstream.close();
} catch (Exception ex) {
    System.err.println(ex);
}
我尝试了
BufferReader
Scanner
,但都得到了相同的结果。 请记住,控制台中的输出100%等于文件内容


这可能是因为JFXTextArea中使用的字体与文本编辑器中的不同。也许字符间距也起到了作用


我建议首先确定文件使用的文本编辑器的字体类型,并在Java中设置相同的字体。

这是所使用字体的问题。控制台大多使用单间距字体,在对齐字符时效果很好。但是,JavaFX使用的默认字体不是等距字体

您需要自己从该系列中指定字体:

@Override
public void start(Stage stage) throws Exception {
    JFXTextArea textArea = new JFXTextArea();

    ToggleButton toggle = new ToggleButton("monospaced");
    toggle.setSelected(true);

    textArea.fontProperty().bind(
            Bindings.when(toggle.selectedProperty()).then(Font.font("monospaced")).otherwise(Font.getDefault()));

    textArea.setText(
            "+-----------+----------------------+\n"
          + "|   R1      |   R2                 |\n"
          + "+-----------+----------------------+\n"
          + "|  **DONE** |     ***DONE***       |\n"
          + "+-----------+----------------------+");

    stage.setScene(new Scene(new VBox(toggle, textArea)));
    stage.show();
}
请注意,绑定仅用于显示差异。通常,您只需如下设置字体:

textArea.setFont(Font.font("monospaced"));

这是因为您的文本编辑器中的字体和JavaFX应用程序中的字体不是sameI刚才使用的这个textArea.setFont(font.font(“monospaced”);在我设置文件中的传入数据(out.setText(data))之前,非常感谢@fabian