gpt4 book ai didi

java - 如何在 JavaFX 中最有效地移动多个矩形

转载 作者:行者123 更新时间:2023-12-02 12:29:01 24 4
gpt4 key购买 nike

我有一个 ListView,它定义了一个自定义 CellFactory。

这些单元格行包含多个矩形,代表商店营业时间、顾客时间等。但是,该甘特图必须对水平滚动使用react。每次水平条移动时,所有条都会重新定位。

问题是它非常慢。

public class shopCellWorker extends ListCell<Shop> {
...
public ShopCellWorker(ScrollBar hbar, List<CustomerVisit> visits) {
this.hbar = hbar;
visits.forEach(v -> {
Rectangle r = new Rectangle();
... setup ...

rlist.add(r);
}
hbar.valueProperty().addListener(new UpdateListener());

}

private class UpdateListener implements ChangeListener {

@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
rlist.forEach(rec -> {
... do some simple math to determine the position ...
relocate(x, 3);
})
}
}
}

有什么技巧可以让渲染速度更快吗?

最佳答案

尝试使用Group .

这里只是草稿版本:

public class shopCellWorker extends ListCell<Shop> {
Group rectGroup = new Group();
public ShopCellWorker(ScrollBar hbar, List<CustomerVisit> visits) {
visits.forEach(v -> {
Rectangle r = new Rectangle();
... setup ...

rectGroup.getChildren().add(r);
}
hbar.valueProperty().addListener(new UpdateListener());

}

private class UpdateListener implements ChangeListener {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
// Have a calculated new possition here
rectGroup.setTranslateX(calculatedNewXPos);
}
}
}

关于java - 如何在 JavaFX 中最有效地移动多个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45375839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com