2016-01-21 3 views
0

Я создал JSLider от 0 до 1 с шагом 0,1. Я написал следующий код для его реализации, но я не уверен, как извлекать значения из ползунка, поскольку функция getValue() только извлекает целочисленные значения. В моем случае он всегда выбирает 10 независимо от того, где я перемещаю слайдер. Пожалуйста, кто-нибудь скажет мне, как я могу получить двойные значения со своего слайдера.Извлечь двойное значение из настраиваемого 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); 


      } 

     } 
    }); 

Спасибо заранее.

С уважением, Colin

+2

Сделать это работать с 0-10, так что ПолучитьЗначение может обеспечить значение, а затем разделить его на 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

Смежные вопросы