2015-11-27 56 views
1

我有一個JSlider和3個jtextfields的簡單面板。 我使用的構造JSlider的構建JSlider的(INT分鐘,INT最大,int值) 這樣的:JSlider拋出非法參數異常:無效範圍屬性

public class Slide extends JFrame{ 

    JSlider slider=new JSlider(100,200,50);//here lies the problem 
    JTextField maxVal=new JTextField(10); 
    JTextField minVal=new JTextField(10); 
    JTextField curVal=new JTextField(10); 
    public Slide(){ 


     JPanel panel=new JPanel(); 
     slider.addChangeListener(new ChangeListener() { 
      public void stateChanged(ChangeEvent arg0) { 
       minVal.setText(slider.getMinimum()+""); 
       maxVal.setText(slider.getMaximum()+""); 
       curVal.setText(slider.getValue()+""); 

      } 
     }); 
     panel.setLayout(new MigLayout("", "[][][][]", "[][][][]")); 



     panel.add(slider, "cell 0 0,alignx left,aligny top"); 
     JLabel label = new JLabel("Min val"); 
     panel.add(label,"cell 0 2"); 
     panel.add(minVal, "cell 3 2"); 
     this.setContentPane(panel); 
     JLabel label_1 = new JLabel("Max val:"); 
     panel.add(maxVal,"cell 3 3"); 
     panel.add(label_1, "cell 0 3"); 
     panel.add(new JLabel("Cur value:"), "cell 0 4"); 
     panel.add((curVal),"cell 3 4"); 
     this.setSize(400, 400); 
     this.setVisible(true); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 

    public static void main(String args[]){ 
     new Slide(); 
    } 
} 

的問題是,當我嘗試運行這個程序,我得到一個非法參數異常,但如果我刪除了第三個參數,一切正常。

Exception in thread "main" java.lang.IllegalArgumentException: invalid range properties 
    at javax.swing.DefaultBoundedRangeModel.<init>(DefaultBoundedRangeModel.java:102) 
    at javax.swing.JSlider.<init>(JSlider.java:274) 
    at javax.swing.JSlider.<init>(JSlider.java:241) 
    at JSlider.Slide.<init>(Slide.java:20) 
    at JSlider.Slide.main(Slide.java:54) 
Java Result: 1 

任何想法爲什麼會發生這種情況?

+0

有關構造函數[JSlider(int min,int max,int value)](https://docs.oracle.com/javase/7/docs/api/javax/swing/JSlider.html)的API會話,值被聲明爲100,最大值約爲200,初始值必須等於或等於100,但是在50 – mKorbel

回答

3

從Java文檔:

JSlider(int min, int max, int value)

創建使用指定最小值,最大值和值的水平滑塊。

保存滑塊數據的BoundedRangeModel可處理由於不正確地設置滑塊上的最小值,初始值和最大值而可能引起的任何問題。有關詳細信息,請參閱BoundedRangeModel文檔。

BoundedRangeModel

minimum <= value <= value+extent <= maximum 

參數應保持上述關係。在你的情況下,100(min)大於50(value)。

相關問題