2015-04-22 74 views
-1

我想驗證JTextField的整數值。我想確保用戶只能在設定範圍之間輸入整數值。我試着用JFormattedTextField工作,但到目前爲止沒有運氣。JTextField整數驗證

+2

1)考慮使用'JSpinner'和['SpinnerNumberModel']](https://docs.oracle.com/javase/8/docs/api/javax/swing/SpinnerNumberModel.html)。 2)*「迄今爲止沒有運氣」*編程不是關於'運氣'。爲了更快地獲得更好的幫助,請發佈[MCVE](http://stackoverflow.com/help/mcve)(最小完整可驗證示例)或[SSCCE](http://www.sscce.org/)(Short,Self Contained ,正確的例子)你的嘗試。 –

+0

1)謝謝你的答覆。2)迄今爲止,沒有運氣是一個表達意思,我一直在嘗試沒有工作,因此我的問題的原因。 –

+1

*「沒有運氣是一種表達」*我意識到這一點。海事組織,它不應該用於計算問題,保存它,因爲當你在狗的軌道。但超越這一點,並轉到該評論的重要部分 - 發佈MCVE! –

回答

0

一個不錯的選擇是使用InputVerifier - 除非滿足輸入條件,否則您的文本字段將不會產生焦點。 A JFormattedTextField在這裏不會做,因爲你的限制不僅僅是格式,而且是數學。

public class NumRange extends JFrame { 

    public static void main(String[] args) { 

     new NumRange(); 
    } 

    NumRange() { 

     final int MIN = 0; 
     final int MAX = 100; 

     JTextField textField = new JTextField(); 
     textField.setInputVerifier(new InputVerifier() { 

      @Override 
      public boolean verify(JComponent input) { 
       String text = ((JTextField) input).getText(); 
       int num; 
       try { 
        num = Integer.parseInt(text); 
       } catch (NumberFormatException e) { 
        return false; 
       } 
       if (num <= MAX && num >= MIN) 
        return true; 
       return false; 
      } 
     }); 

     getContentPane().add(textField); 
     getContentPane().add(new JTextField(), BorderLayout.PAGE_END); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     pack(); 
     setVisible(true); 
    } 
} 

嘗試進入各種輸入到最上面的一個後焦點切換到底部文本字段。

+0

真棒謝謝我終於找到了另一種方式,但這也是一個好主意。感謝您的迴應。 –

+0

@JustyneTesterman然後你應該發佈你的解決方案並接受它(之後)。 – user1803551

+0

我會當我得到足夠高的大聲笑 –