gpt4 book ai didi

JavaFX 绑定(bind)时间轴显示问题

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

我目前正在创建一个小游戏,并且我已经创建了以下方法来开始一轮:

private void startRound(){
int playerStarting = rnd.nextInt(2) + 1;
imageBox.managedProperty().bind(imageBox.visibleProperty());

imageBox.setVisible(false);

VBox timeBox = new VBox();
Label timeLabel = new Label();
timeLabel.setId("RoundTimer-Label");
timeBox.setAlignment(Pos.CENTER);

timeBox.getChildren().add(timeLabel);
gr.add(timeBox, 1, 0, 1, 4);

Timeline tl = new Timeline(1);
tl.getKeyFrames().add(new KeyFrame(Duration.seconds(3)));
timeLabel.textProperty().bind(tl.currentTimeProperty().asString());

tl.playFromStart();

timeLabel = null;
timeBox = null;

imageBox.setVisible(true);
}

除了一个问题外,一切都运行正常。

tl.currentTimeProperty().asString();

将数字显示为 1000.7 毫秒和 2001 毫秒,如果情况并非如此,我强烈建议这样做。但是,由于 currentTimeProperty 是一个属性,因此没有可以在其上使用的内置运算符,例如 .divide(1000),并且我无法将标签文本绑定(bind)到 Duration 本身,即使它确实具有 .divide( 1000)方法。我在这里缺少什么还是我应该以全新的方式来处理这个问题?谢谢。

最佳答案

您可以使用绑定(bind)来执行您想要的任何转换。

timeLabel.textProperty().bind(
Bindings.createStringBinding(() -> String.format("%f", Double.valueOf(tl.currentTimeProperty().get().toMillis())/1000.0), tl.currentTimeProperty())
);

关于JavaFX 绑定(bind)时间轴显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32841814/

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