【问题标题】:JavaFX Slider ticks not showing correctlyJavaFX 滑块刻度未正确显示
【发布时间】:2018-03-27 11:35:53
【问题描述】:

我想做什么: 有一个从 0 到 10 的滑块,让它只移动一个完整的刻度 (1),并在刻度上方显示刻度的值。

会发生什么: 它显示了从 0 到 10 的所有值,除了神秘缺失的 9 ..

我想在这里上传一张图片,但我似乎缺乏声誉 ;)

https://pasteboard.co/HdPtzVp.png

代码: 主类:

import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.stage.Screen;
import javafx.stage.Stage;

public class StartGui extends Application
{

    @Override
    public void start(Stage stage)
    {

        HBox box = new HBox();
        PionnenSlider slider = new PionnenSlider();
        box.getChildren().add(slider);
        Scene scene = new Scene(box, 500, 300);
        stage.setScene(scene);
        stage.setTitle("SliderMinimalCode");
        Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
        stage.show();
    }

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

}

滑块类:

import javafx.scene.control.Slider;

public class PionnenSlider extends Slider
{

    public PionnenSlider()
    {
        setMinorTickCount(0);
        setBlockIncrement(1);
        setMajorTickUnit(1);  

        setValue(0);
        setMax(10);
        setShowTickMarks(true);
        setShowTickLabels(true);
        setSnapToTicks(true);

    }
}

【问题讨论】:

  • 您未显示的代码有问题;) 请阅读stackoverflow.com/help/mcve 并采取相应措施
  • ... 如果您可以通过配置实现相同的控制,请不要扩展控件(也不要扩展任何其他类)
  • 滑块的唯一变化发生在 PionnenSlider 类中
  • Hmm .. 您的示例确实按预期显示倒数第二个刻度标签(9)。仅当我将窗口的宽度减小到最小时,由于缺少空间,它才不会显示。再说一遍:不要扩展 - 不需要 PionnenSlider,它只是使用公共 api 配置!
  • 这不是因为没有足够的空间显示9吗?增加维度将解决问题。示例here.

标签: java javafx slider


【解决方案1】:

显然这是由于滑块空间不足,找到了一种解决方法来使用 HBox.setHgrow(sliderPionnen, Priority.ALWAYS); 自动调整它的大小,尽管它只会增加它以填充整个 HBOX .. 所以我猜我必须找到解决方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多