2012-12-22 36 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界面?