2016-01-21 52 views
0

我創建了一個從0到1的JSLider,增量爲0.1。我寫了下面的代碼來實現它,但我不知道如何從滑塊中獲取值,因爲函數getValue()僅獲取整數值。在我的情況下,無論移動滑塊的位置如何,它總是取10。請任何人都可以告訴我如何從我的滑塊獲取double值。從定製JSlider獲取雙倍值

 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); 


      } 

     } 
    }); 

提前感謝代碼。

問候, 科林

+2

使其從0-10工作,使的getValue所能提供的價值,然後除以10它來得到你想要的。 – Nabin

回答

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); 
     } 
    } 
}); 
+0

謝謝你的幫助! – Colin11