JavaFX TextArea不会正确附加文本

时间:2018-05-13 16:11:26

标签: javafx

我试图使用TDD构建一个简单的计算器,所以我有一个右对齐的TextArea来显示结果和20个按钮。每次按下其中一个数字按钮,它只是将数字附加到TextArea,当我按下点按钮时应该发生同样的事情。但是它将点作为TextArea中的第一个字符,只有当我按下一个新数字时,点才会到达正确的位置。

因此,例如,如果我按9然后按8,TextArea显示" 98",现在如果按下该点,结果将是" .98",最后如果7是按下结果是" 98.7"。

按下点按钮时的预期结果应该是" 98。"。

我在下面创建了一个Minimal,Complete和Verifiable示例

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");
}

正如您所看到的,代码非常简单。它应该工作,我唯一的线索是,当节点方向设置为RIGHT_TO_LEFT时,这是TextArea的错误。如果节点方向设置为INHERIT或LEFT_TO_RIGHT,则按预期工作。谢谢。

0 个答案:

没有答案