2013-04-10 115 views
5

我工作的一個數獨解算器,我試圖限制數字的用戶可以進入細胞以及ONLY能也輸入數字,目前它的量接受信件。目前它的工作原理是這樣的:如果用戶輸入「11125455876」,它將只使用輸入的最後一個數字(在本例中爲「6」)。我想限制用戶輸入單個單元格的數量爲1,只接受數字1-9。我不確定我能做到這一點。所以也許它會覆蓋前面的數字或者某個東西,如果我按下一個字母鍵作爲「a」,什麼都不會發生。數限制輸入的JTextField

這裏是我的代碼:

public PanelGUI(int size) { 

    super(size); 
    NumberFormat f = NumberFormat.getInstance(); 
    f.setMaximumIntegerDigits(1); 
    f.setMinimumIntegerDigits(0); 
    f.setGroupingUsed(false); 
    cells = new JTextField[size][size]; 
    panel.setLayout(new GridLayout(size, size)); 
    for (int i = 0; i < size; i++) { 
     for (int j = 0; j < size; j++) { 
      cells[i][j] = new JFormattedTextField(f); 
      cells[i][j].setEditable(true); 
      cells[i][j].setFont(boldFont); 
      cells[i][j].setBorder(BorderFactory.createMatteBorder(1, 1, 1, 
        1, Color.white)); 
      cells[i][j].setHorizontalAlignment(JTextField.CENTER); 
      panel.add(cells[i][j]); 
     } 
    } 
} 

如你我目前使用number format看到。

+1

使用['DocumentFilter'] (http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/text/DocumentFilter.html)來限制輸入。 – 2013-04-10 16:15:46

+0

@Extreme Coders你能寫一個關於它在我的情況下應該是什麼樣子的答案嗎?我對此不太瞭解。什麼需要改變? – Rob 2013-04-10 16:20:43

+0

http://stackoverflow.com/questions/3519151/how-to-limit-the-number-of-characters-in-jtextfield – herinkc 2013-04-10 16:24:13

回答

3
NumberFormat f = NumberFormat.getInstance(); 
f.setMaximumIntegerDigits(1); 
f.setMinimumIntegerDigits(0); 
f.setGroupingUsed(false); 

您想使用MaskFormat instread:在下面的鏈接,說

MaskFormatter f = new MaskFormatter("#"); 
f.setValidCharacters("123456789"); 
+0

我試過你提到的,但它給了我一個錯誤,並告訴我要麼添加一個throw聲明或try/catch的環繞聲。沒有得到它與那些工作。 – Rob 2013-04-10 16:35:30

+1

所以添加一個try/catch。這是標準的Java編程,沒有特別與此代碼有關。你需要知道如何處理異常。您可以隨時搜索論壇/結婚例如使用try/catch。 – camickr 2013-04-10 18:21:25