【问题标题】:Fetch double value from customized JSlider从自定义的 JSlider 中获取双精度值
【发布时间】:2016-01-21 02:01:49
【问题描述】:

我创建了一个从 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);


          }

      }
    });

提前致谢。

问候, 科林

【问题讨论】:

  • 让它在 0-10 范围内工作,这样 getValue 可以提供价值,然后除以 10 得到你想要的。

标签: java swing japplet jslider


【解决方案1】:

您的代码按原样完美运行。 我做的唯一改变是除以 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);
        }
    }
});

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 2014-11-29
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    相关资源
    最近更新 更多