从自定义JSlider获取double值

时间:2016-01-21 02:01:49

标签: java swing japplet 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);


          }

      }
    });

提前致谢。

此致 科林

1 个答案:

答案 0 :(得分:0)

您的代码完美无瑕。 我做的唯一改变是除以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);
        }
    }
});