从自定义的 JSlider 中获取双精度值

Fetch double value from customized JSlider

我创建了一个从 0 到 1 的 JSLider,增量为 0.1。我编写了以下代码来实现它,但我不确定如何从滑块中获取值,因为函数 getValue() 仅获取整数值。在我的例子中,无论我将滑块移动到哪里,它总是获取 10。谁能告诉我如何从我的滑块中获取双精度值。

        slider=new JSlider();
        slider.setMajorTickSpacing(1);
        slider.setMaximum(10);
        slider.setPaintLabels(true);
        slider.setPaintTicks(true);
        slider.setPreferredSize(new java.awt.Dimension(230, 46));
        Format f = new DecimalFormat("0.0");
        Hashtable<Integer, JComponent> labels = new Hashtable<Integer,     JComponent>();
        for(int i=0;i<=10;i++){
            JLabel label = new JLabel(f.format(i*0.1));
            label.setFont(label.getFont().deriveFont(Font.PLAIN));
            labels.put(i,label);
        }
        slider.setLabelTable(labels);

监听器的代码如下

    slider.addChangeListener(new ChangeListener() {
      public void stateChanged(ChangeEvent event) {
          if(!slider.getValueIsAdjusting())
          {
              double value = slider.getValue();
          System.out.println("value"+value);


          }

      }
    });

提前致谢。

此致, 科林

您的代码按原样完美运行。 我做的唯一改变是除以 10.0,所以我们得到一个双倍数:

slider.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent event) {
        if (!slider.getValueIsAdjusting()) {
            double v = slider.getValue() / 10.0;
            System.out.println("value: "+v);
        }
    }
});