java - 如何将 JavaFX slider 绑定(bind)到显示列表中的值的标签?

标签 java javafx

我使用绑定(bind)到 LabelJavaFX 构建了这个 Slider。目前,我只设法让 Slider 处理离散值(从 0 到 15),并将这些值显示在 Label 上。我想显示另一种值,每个值对应 16 个离散值。也许来自列表或其他什么。 我怎样才能实现这个目标?

我的实现

private Slider sampleRateSlider = new Slider (0, 15, 0);
private Label sampleRateLabel = new Label("Sample Rate");
private Label sampleRateValueLabel = new 
Label(Double.toString(sampleRateSlider.getValue()));

acquisitionModeTab.setConstraints(sampleRateLabel,0, 1);
acquisitionModeTab.setConstraints(sampleRateSlider, 1, 1);
sampleRateSlider.setShowTickLabels(true);
sampleRateSlider.setShowTickMarks(true);
sampleRateSlider.setMajorTickUnit(5);
sampleRateSlider.setMinorTickCount(5);
sampleRateSlider.setSnapToTicks(true);
acquisitionModeTab.setConstraints(sampleRateValueLabel, 2, 1);
sampleRateValueLabel.setAlignment(Pos.CENTER_RIGHT);

我的控件类中的 initialize() 方法内的监听器:

 sampleRateSlider.valueProperty().addListener((ov, old_val, new_val) -> {
        new_val = Math.round(new_val.doubleValue());
        sampleRateSlider.setValue(new_val.doubleValue());
        System.out.println(new_val.intValue());
        sampleRateValueLabel.setText(new_val.toString());
    });

一切正常,但我想实现我上面要求的目标,但我不知道如何实现。

最佳答案

private Label sampleRateValueLabel = new Label(getDisplayString(0));
sampleRateSlider.valueProperty().addListener((ov, old_val, new_val) -> {
    int value = (int) Math.round(new_val.doubleValue());
    sampleRateSlider.setValue(value);
    System.out.println(value);
    sampleRateValueLabel.setText(getDisplayString(value));
});

getDisplayString方法应该使用合适的数据结构来得出 String回来。 List<String>确实是一个不错的选择,但是String[]Map<Integer, String>也可以工作:

private static final String[] STRINGS = new String[] {
         "s", "t", "a", "c", "k", "o", "v", "e",  "r", "f", "l", "o", "w", "c", "o", "m"
    };

private static String getDisplayString(int value) {
    return STRINGS[value];
}

关于java - 如何将 JavaFX slider 绑定(bind)到显示列表中的值的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51241467/

相关文章:

java - 如何在Java/Android中实现DUKPT加解密?

javafx - 如何防止 JavaFX 窗口最大化为全屏?

java - 如何检测类路径中的重复 JAR?

java - (#200) 需要扩展权限 : publish_actions

java - 在 IntelliJ 中设置 JavaFX

javafx - 在 Javafx 中向剪切图像添加照明效果

java - 如何在 Javafx 中相互比较 2 个字段文本

java - 如何从在不同类中运行的 TimerTask 更新 JavaFX 应用程序线程?

java - openjdk中的原生linux方法在哪里?

java - Spring Boot 使用带有通用字段的类来使用 REST API,该字段未转换为正确的类型。我究竟做错了什么?