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,但我不明白它是如何工作的。谢谢!