java - 非连续 slider

标签 java javafx-2 javafx-8

我想要有以下 slider ,用户只能选择预定义的一组值(64、128、256、... 2048),并且我还希望能够为此刻度设置标签。像这样的事情:


[--*---------*------------------O--------------]
   64       128                256

是否有针对这种非连续 slider 的内置解决方案或组件?

最佳答案

这是针对 JavaFX-8 的(由于问题,它不适用于 JFX-2,请观看下面的评论):

@Override
public void start(Stage stage) throws Exception {
    Slider s = new Slider();
    s.setLabelFormatter(new StringConverter<Double>() {
        @Override
        public String toString(Double t) {
            return String.valueOf(Math.round(Math.pow(2, t)));
        }

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

    s.setMin(0);
    s.setMax(10);
    s.setMajorTickUnit(1);
    s.setMinorTickCount(0);
    s.setSnapToTicks(true);
    s.setShowTickLabels(true);
    s.setShowTickMarks(true);

    stage.setScene(new Scene(s));
    stage.show();
}

但是根据问题:https://javafx-jira.kenai.com/browse/RT-18448该解决方案在 8.0 版本构建之前无法应用。

问题在于,似乎没有办法使用左侧属性的操作来解决问题。因为所有左边的属性都可以操纵 slider 进行线性值变化。对数值的改变是通过LabelFormatter实现的,这是一个技巧。

还有一个自定义功能:https://javafx-jira.kenai.com/browse/RT-27863

关于java - 非连续 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16347323/

相关文章:

css - 使用 FXML/CSS 更改 JavaFX 中 Menu 控件的文本颜色

java - 处理来自 BT 芯片的周期性心跳消息

java - 为什么我的示例不抛出 ConcurrentModificationException

javafx - 如何平滑拖动 JavaFX 多边形?

java - 如何在 JAVA FX 2.2 中重新绘制窗口(舞台)

java - 任务 ':dex'的执行失败

layout - JavaFX 8 maxWidth 被忽略了吗?

java - 如何检测鼠标点击二次曲线的 "stroke"部分?

java - 使用 Criteria API 根据条件计算连接表的结果

java - 无法在 Windows 7 中使用 Java 8 打印文本文件