【问题标题】:Show text on TextField after button is pressed (JavaFX)按下按钮后在 TextField 上显示文本(JavaFX)
【发布时间】:2017-12-17 14:27:06
【问题描述】:

我正在尝试构建一个计算器,并且我查看了整个互联网并且示例对我没有帮助,所以我创建了按钮和所有内容,我正在尝试显示:

    TextField Result = new TextField();
    Result.setEditable(false);
    Result.setAlignment(Pos.CENTER_RIGHT);
    Result.setMinSize(210, 30);
    Result.textProperty().bind(Bindings.format("%.0f" , value));    
    pane.getChildren().add(Result);

按下按钮的编号,我该怎么做?假设按钮是:

Button uno = new Button("1");

uno.setMinSize(40, 40); pane.getChildren().add(uno);

如何使文本字段结果显示为 1?

非常感谢!

【问题讨论】:

  • Here 是我第一次发现 JavaFx 时为接受采访所做的一个糟糕的实现。

标签: button javafx calculator


【解决方案1】:

最简单的方法是为每个按钮添加一个侦听器并动态更改您的 TextField:

uno.pressedProperty().addListener((o, old, newValue) -> Result.setText("1"));
dos.pressedProperty().addListener((o, old, newValue) -> Result.setText("2"));

请注意,当用户按下和取消按下按钮时,您的侦听器会以 newValue = true/false 做出两次反应。如果需要,请进行额外检查:

uno.pressedProperty().addListener((o, old, newValue) -> {
    if (newValue) {
        Result.setText("1")
    }
});

更新: 不要忘记将此行作为错误的解决方案删除:

Result.textProperty().bind(Bindings.format("%.0f" , value));

【讨论】:

  • 感谢您的帮助!但是当我输入: uno.pressedProperty().addListener((o, old, newValue) -> { if (newValue) { Result.setText("1") } });在代码上,它什么也没做,它给了我一个错误。
  • 谢谢兄弟!我正在认真尝试完成这项工作,我为自己设定了最后期限,但我被困在这里。这是我得到的错误:
  • 我重现了您的问题。您需要删除此行: Result.textProperty().bind(Bindings.format("%.0f" , value));.
  • 我很高兴,别忘了投票并将答案标记为获胜者:)
  • 哦!我不知道你可以在这里做到这一点,我当然很乐意这样做。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 2020-12-17
  • 1970-01-01
  • 2020-10-01
相关资源
最近更新 更多