Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx滑块拇指_Java_Javafx_Slider - Fatal编程技术网

Javafx滑块拇指

Javafx滑块拇指,java,javafx,slider,Java,Javafx,Slider,在javafx中有没有办法在滑块拇指上显示整数?只是好奇,因为我正在尝试创建一个干净的UI,但在滑块thumb上显示整数时找不到任何东西。解决此需求的一种方法是访问thumb节点并包含文本/标签节点。请查看下面的演示,了解我的意思 您可以调整拇指填充和文本大小以进行微调 更新: 如果您不想依赖于访问皮肤,您确实可以实现/初始化滑块,如下所示。这样,您可以创建自定义滑块,并可以在多个位置重复使用 Slider slider = new Slider(1, 10, 3) { Text te

在javafx中有没有办法在滑块拇指上显示整数?只是好奇,因为我正在尝试创建一个干净的UI,但在滑块thumb上显示整数时找不到任何东西。

解决此需求的一种方法是访问thumb节点并包含文本/标签节点。请查看下面的演示,了解我的意思

您可以调整拇指填充和文本大小以进行微调

更新:

如果您不想依赖于访问皮肤,您确实可以实现/初始化滑块,如下所示。这样,您可以创建自定义滑块,并可以在多个位置重复使用

Slider slider = new Slider(1, 10, 3) {
    Text text;

    @Override
    protected void layoutChildren() {
        super.layoutChildren();
        if (text == null) {
            text = new Text(((int) getValue()) + "");
            valueProperty().addListener((obs, old, val) -> text.setText(val.intValue() + ""));
            StackPane thumb = (StackPane) lookup(".thumb");
            thumb.setPadding(new Insets(10));
            thumb.getChildren().add(text);
        }
    }
};

需要注意的是:上面隐式依赖于
滑块的蒙皮作为默认蒙皮。更新了我的答案w.r.t依赖于蒙皮。这仍然隐式依赖于默认蒙皮。是皮肤添加了用作拇指的
StackPane
,并为其提供了
.thumb
样式类。我并不是说这是一个问题,特别是如果OP继续使用默认皮肤(假设JavaFXCSS参考指南中的内容被认为是公共和稳定的API,但请注意,只说
。thumb
是一个
区域
)。但是如果OP使用一个库,用它自己的实现替换皮肤,那么上面的代码可能会中断。我相信如果他打算使用自己的皮肤实现,这将使事情变得更直接,他可以完全控制所有内部,并且可以自定义他喜欢的滑块。@slaw,对不起,我忽略了你评论中的“图书馆”一词。我同意你的观点,如果皮肤有不同的构建拇指节点的方法,那么实现可能会改变。谢谢:)
Slider slider = new Slider(1, 10, 3) {
    Text text;

    @Override
    protected void layoutChildren() {
        super.layoutChildren();
        if (text == null) {
            text = new Text(((int) getValue()) + "");
            valueProperty().addListener((obs, old, val) -> text.setText(val.intValue() + ""));
            StackPane thumb = (StackPane) lookup(".thumb");
            thumb.setPadding(new Insets(10));
            thumb.getChildren().add(text);
        }
    }
};