gpt4 book ai didi

java - 如何将 JavaFX Slider 设置为时间格式?

转载 作者:行者123 更新时间:2023-11-29 04:45:05 25 4
gpt4 key购买 nike

我使用 JavaFX 创建了一个 Slider。我正在尝试将其设置为以分钟为单位显示时间。

我已经能够将分钟设置为 0 - 60。我的问题是我的分钟显示正确,但我的秒数在 0 - 100 之间。

我该如何解决这个问题?

这是我创建 slider 的方式

 <ScrollPane fx:id="RulerScroll1" hbarPolicy="NEVER" maxHeight="40" minHeight="40" pannable="true" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS" GridPane.rowIndex="2">    
<Slider fx:id="Ruler1" majorTickUnit="10" maxHeight="35" min="0" minHeight="35" minorTickCount="4" showTickLabels="true" showTickMarks="true" snapToPixel="true" />
</ScrollPane>

我如何格式化它给我的值,以便它们可以显示为分钟和秒?

最佳答案

你可以使用 StringConverter在另一个控件上显示 Slider 的值,您也可以将此转换器用于 labelFormatterProperty slider

在示例中

enter image description here

它将 Slider 的范围设置为 0-3600,并以“15:00”格式显示每 15 分钟的刻度。 Slider 的值每秒以相同的格式显示在 Text 控件上。

public class SliderTime extends Application {
@Override
public void start(Stage primaryStage) {
try {
HBox root = new HBox();
Scene scene = new Scene(root,400,400);

Slider sl = new Slider(0, 3600, 20);
sl.setMajorTickUnit(450);
sl.setShowTickLabels(true);
StringConverter<Double> stringConverter = new StringConverter<>() {

@Override
public String toString(Double object) {
long seconds = object.longValue();
long minutes = TimeUnit.SECONDS.toMinutes(seconds);
long remainingseconds = seconds - TimeUnit.MINUTES.toSeconds(minutes);
return String.format("%02d", minutes) + ":" + String.format("%02d", remainingseconds);
}

@Override
public Double fromString(String string) {
return null;
}
};

sl.setLabelFormatter(stringConverter);

Text text = new Text();

sl.valueProperty().addListener((observable, oldValue, newValue) ->
text.setText(stringConverter.toString(newValue.doubleValue())));

root.getChildren().addAll(sl, text);

primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}

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

关于java - 如何将 JavaFX Slider 设置为时间格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517949/

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