javafx - JavaFX 绑定布局属性不适用于动态添加的节点
问题描述
在我的程序中,在服务中,我创建了一个秒表(标签),用于计算从数据库加载数据的时间。
现在,我想将标签固定到适当的表上,所以我尝试使用该bind
方法,但它不起作用。
请注意,我在 FXML 文件中创建了测试标签,它确实有效。
public class PutDataService extends Service {
CanvasTableView tableView;
Label labelTimer;
Timer timer;
public PutDataService(CanvasTableView canvasTableView) {
this.tableView = canvasTableView;
labelTimer = new Label("Time: ");
timer = new Timer();
Label testLabel = (Label) Controller.getInstance().getTarget().getAnchorPane().lookup("#testLabel");
testLabel.setManaged(false);
testLabel.layoutXProperty().bind(tableView.layoutXProperty());
testLabel.layoutYProperty().bind(tableView.layoutYProperty().subtract(20.0));
testLabel.toFront();
Platform.runLater(() -> {
Controller.getInstance().getTarget().getAnchorPane().getChildren().add(labelTimer);
labelTimer.setManaged(false);
labelTimer.layoutXProperty().bind(tableView.layoutXProperty());
labelTimer.layoutYProperty().bind(tableView.layoutYProperty().subtract(20.0));
labelTimer.toFront();
});
labelTimer.layoutXProperty().addListener((observableValue, number, t1) -> System.out.println(labelTimer.layoutXProperty().getValue()));//changed !
setOnSucceeded((EventHandler<WorkerStateEvent>) workerStateEvent -> {
//Unbind here
Controller.getInstance().getTarget().getAnchorPane().getChildren().remove(labelTimer);
timer.cancel();
timer.purge();
});
}
@Override
protected Task createTask() {
return new Task() {
@Override
protected Object call() throws Exception {
//Start the stop watch , counts every 1 sec
timer.schedule(new TimerTask() {
int i = 0;
@Override
public void run() {
Platform.runLater(() -> labelTimer.textProperty().setValue(getTimeMessage(i)));
i++;
}
}, 0, 1000);
tableView.putData();
return null;
}
};
}
}
我做错了什么?
解决方案
推荐阅读
- javascript - JS:如何切换对象的 CSS 子类?
- react-native - 为 textInput 中输入的文本添加背景颜色反应本机
- python-3.x - PySpark 使用另一列中存在的值查询一个列名
- firebase - 如何在firebase firestore中准确合并多个流
- javascript - Uncaught (in promise) TypeError: localStorage.setItem is not a function
- python - 只返回列表的最后一个元素?
- flutter - 颤振错误:'上下文!= null':不正确
- flutter - 如何使用动画将容器缓慢扩展到一定高度?
- node.js - 首次连接时无法连接到服务器 [localhost:27107]
- reactjs - 如何在 TypeScript 中传递扩展 RouteComponentProps<{ id: string}> 的 InforProps