Как напечатать содержимое файла в текстовой области? - PullRequest
0 голосов
/ 18 января 2019

Я хочу напечатать содержимое моего файла на моем JFXTextArea, но вывод не на 100% совпадает.

Это содержимое файла:

enter image description here

Это вывод моей программы JavaFX:

enter image description here

и это мой код:

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% равен содержанию файла.

enter image description here

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Это проблема используемого шрифта. Консоли в основном используют моноширинные шрифты, которые хорошо работают при выравнивании символов. Однако используемый по умолчанию 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"));
0 голосов
/ 18 января 2019

Вероятно, потому, что вы используете другой шрифт в JFXTextArea, чем в текстовом редакторе. Возможно, межсимвольный интервал также играет роль.

Я предлагаю сначала выяснить, какой тип шрифта использует ваш текстовый редактор, в котором вы создали свой файл, и установить тот же шрифт в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...