我想将文件的内容打印到我的JFXTextArea
上,但是输出不是100%相同。
这是文件内容:
这是我的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%。
答案 0 :(得分:1)
这是所使用字体的问题。控制台通常使用等宽字体,在对齐字符时效果很好。但是,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"));
答案 1 :(得分:0)
可能是因为您在JFXTextArea中使用的字体与文本编辑器中使用的字体不同。也许字符间距也起作用。
我建议先弄清楚您使用文件的文本编辑器使用的字体类型,并在Java中设置相同的字体。