Java 更改时更改显示值

Java 更改时更改显示值,java,javafx,binding,Java,Javafx,Binding,我正在尝试根据值的变化更新我的文本计数器显示的值。我如何做到这一点?我在某处读过这么多关于绑定它的书,但我不知道绑定到什么。有人能帮我吗 public class main extends Application implements EventHandler<ActionEvent>{ Button button; Button button2; Counter counter = new Counter(0); Text text_counter = new Text(Inte

我正在尝试根据值的变化更新我的文本计数器显示的值。我如何做到这一点?我在某处读过这么多关于绑定它的书,但我不知道绑定到什么。有人能帮我吗

public class main extends Application implements EventHandler<ActionEvent>{

Button button;
Button button2;
Counter counter = new Counter(0);
Text text_counter = new Text(Integer.toString(counter.getCount()));

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
    primaryStage.setTitle("Counter Window");

    button = new Button();
    button2 = new Button();
    button.setText("Reset");
    button.setOnAction(this);
    button2.setText("Tick");
    button2.setOnAction(this);
    button.setTranslateY(-120);
    button2.setTranslateY(-120);
    button2.setTranslateX(50);
    text_counter.textProperty().bind(counter.getCount());
public类主扩展应用程序实现EventHandler{
按钮;
按钮2;
计数器=新计数器(0);
Text Text_counter=新文本(Integer.toString(counter.getCount());
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
public void start(Stage primaryStage)引发异常{
primaryStage.setTitle(“计数器窗口”);
按钮=新按钮();
button2=新按钮();
按钮。设置文本(“重置”);
按钮。设置动作(此);
按钮2.setText(“勾选”);
按钮2.设置动作(本);
按钮。setTranslateY(-120);
按钮2.setTranslateY(-120);
按钮2.setTranslateX(50);
text_counter.textProperty().bind(counter.getCount());

您需要将
Text
节点的
textProperty()
绑定到计数器的值。下面是一个如何继续的示例:

class Counter {
    // The StringProperty to whom the Text node's textProperty will be bound to
    private StringProperty counter; 

    public Counter() {
        counter = new SimpleStringProperty();
    }

    public Counter(int count) {
        this();
        counter.set(Integer.toString(count));
    }

    public void set(int count) {
        counter.set(Integer.toString(count));
    }
}
结合试验:

// Create the counter
Counter c = new Counter(0);

// The Text node
Text text_counter = new Text(c.counter.get());

// Bind textProperty() to c.counter, which is a StringProperty
// Any changes to the value of c.counter will be reflected on the
// text of your Text node
text_counter.textProperty().bind(c.counter);

System.out.println("Before change:");
System.out.println(String.format("Text: %s Counter: %s",
        text_counter.textProperty().get(),
c.counter.get()));

c.counter.set("10"); // Make a change

System.out.println("After change:");
System.out.println(String.format("Text: %s Counter: %s",
        text_counter.textProperty().get(),
c.counter.get()));
输出:

Before change:
Text: 0 Counter: 0
After change:
Text: 10 Counter: 10

计数器的类型是什么?它是一个计数器对象。保存1个私有变量count它来自哪里?它是您创建的类吗?如果是,您可以将计数作为属性(
IntegerProperty
LongProperty
)再次强调,如果这就是它的全部功能,那么您也可以使用一个
SimpleIntegerProperty
等作为开始。非常感谢。我花了一段时间才弄清楚您在做什么,因为我已经习惯了python,我才刚开始学习Java,但我不明白它是如何工作的。谢谢!