2012-12-22 78 views
0

有誰知道我將如何發送JSlider的事件處理程序中的選定值stateChanged並將其設置爲全局變量?如何將JSlider選定值設置爲全局變量?

例如

public class Slider extends JPanel { 

    public JSlider slider; 
    public UserFrame frame; 
    public double[] priceRange; 

    public static void main(String[] args) throws ClassNotFoundException, SQLException { 
     new Slider(); 
    } 

    public Slider() throws ClassNotFoundException, SQLException { 
     slider = new JSlider(); 
     priceRange = new double[2]; 

     slider.setBorder(BorderFactory.createTitledBorder("Maximum Price in SEK")); 

    /* 
    * The minimum and maximum values are queried from the database. Those 
    * values are then rounded up (maximum) to the nearest 10 SEK. 
    * For example, if the minimum is 67 SEK and the maximum 95 SEK, then 
    * the displayed range is [70, 100]. 
    */ 
     int min = (getMinimumPrice()/10) * 10 + 10; 
     int max = (getMaximumPrice()/10) * 10 + 10; 

     slider.setMajorTickSpacing(10); 
     slider.setMinorTickSpacing(5); 
     slider.setMinimum(min); 
     slider.setMaximum(max); 
     slider.setPaintTicks(true); 
     slider.setPaintLabels(true); 
     add(slider); 
    } 

    public void stateChanged(ChangeEvent e) { 
     JSlider source = (JSlider)e.getSource(); 
     if (!source.getValueIsAdjusting()) { 
      slider.getModel().setValue(slider.getModel().getValue()); 
      priceRange[0] = slider.getModel().getValue(); 
     } 
    } 
} 

...等等,忽略了方法getMinimumgetMaximum他們只是在我的數據庫中檢索的最高和最低值,但可以說我想要當用戶有發生發佈JSlider旋鈕是將其設置爲priceRange[0]。我將如何能夠做到這一點?我曾嘗試創建一個模型,並設置與stateChanged每次我在我的主組碼附加的東西,像這樣一個ActionListener外還...

priceRange[0] = slider.getModel().getValue(); 

,然後打印出該結果,並獲得最低限度我也設置它。

我真的很感激任何進一步的建議。

有一個偉大的即將到來的假期! :)

一切順利, 馬庫斯

回答

2

只要刪除這些行:

slider.getModel().setValue(slider.getModel().getValue()); 
priceRange[0] = slider.getModel().getValue(); 

,並插入這個來代替:

priceRange[0] = (double)slider.getValue(); 

祝你好運!

P.S.你在哪裏實現了你的ChangeListener界面?