JavaFX TextArea неправильно добавляет текст - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь построить простой калькулятор с использованием TDD, поэтому у меня есть TextArea, выровненное по правому краю для отображения результатов и 20 кнопок.Каждый раз, когда нажимается одна из кнопок с цифрами, она просто добавляет цифру в TextArea, то же самое должно было происходить при нажатии кнопки с точкой.Но вместо этого он помещает точку в качестве первого символа в TextArea, и только когда я нажимаю новую цифру, точка перемещается на свое место.

Так, например, если я нажимаю 9, а затем 8, TextArea показывает "98 ", теперь, если нажата точка, результат будет" .98 ", наконец, если нажата 7, результат будет" 98,7 ".

Ожидаемый результат при нажатии кнопки точки должен был быть" 98. ".

Я создал минимальный, полный и проверяемый пример ниже

FXMLDocument.fxml:

<AnchorPane id="AnchorPane" prefHeight="175.0" prefWidth="256.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.141" fx:controller="mcv.FXMLDocumentController">
    <children>
        <Button fx:id="buttonNine" layoutX="14.0" layoutY="100.0" onAction="#handleButtonNine" prefHeight="60.0" prefWidth="69.0" text="9">
         <font>
            <Font size="24.0" />
         </font></Button>
      <TextArea fx:id="textArea" editable="false" focusTraversable="false" layoutX="15.0" layoutY="14.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" nodeOrientation="RIGHT_TO_LEFT" prefHeight="66.0" prefWidth="221.0" wrapText="true">
         <font>
            <Font size="35.0" />
         </font>
      </TextArea>
      <Button fx:id="buttonDot" layoutX="169.0" layoutY="100.0" mnemonicParsing="false" onAction="#handleButtonDot" prefHeight="60.0" prefWidth="69.0" text=".">
         <font>
            <Font size="24.0" />
         </font>
      </Button>
    </children>
</AnchorPane>

FXMLDocumentController.java:

@FXML
private TextArea textArea;

@Override
public void initialize(URL location, ResourceBundle resources) {
}

private void appenToResult(String ch){
    textArea.appendText(ch);
}

@FXML
void handleButtonDot(ActionEvent event) {
    appenToResult(".");
}

@FXML
void handleButtonNine(ActionEvent event) {
    appenToResult("9");
}

Как видите, код очень прост.Это должно работать, моя единственная подсказка заключается в том, что это ошибка с TextArea, когда для Node Orientation установлено значение RIGHT_TO_LEFT.Если ориентация узла установлена ​​в INHERIT или LEFT_TO_RIGHT, она работает как ожидалось.Спасибо.

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