2013-05-20 32 views
1

我想提出一個小的數獨遊戲的GUI輸入和使用的JFormattedTextFields的MaskFormatter:爪哇 - JFormattedTextField上不允許在第一次嘗試

formatter = new MaskFormatter(s); 
formatter.setValidCharacters("123456789"); 

但我的問題是,當窗戶打開,我點擊到其中一個字段中,不可能輸入內容,它只能在第二次嘗試時使用,即當我點擊另一個字段,然後再返回到第一個字段時。

它是否像它必須失去焦點首先激活?

如果我的一些代碼是必需的,請告訴我。

這裏是什麼樣子

enter image description here

編輯:問題在這裏:

if (guessMatrix[i][j] == 0) { 
    tfM[j][i].setBackground(Color.yellow); 
    tfM[j][i].setText(""); 

沒有的setText( 「」),它完美的罰款。

+0

'如果我的一些代碼是必要的,請讓我know' - 發佈[SSCCE(http://sscce.org/)演示該問題。有機會,當你創建SSCCE時,你會發現問題。您不需要調用requestFocusInWindow(),因爲焦點會自動轉到第一個組件。 – camickr

+0

@camickr您說得對,我剛剛發現問題,我將編輯我的文章 –

+0

另請參閱此[備用](http://stackoverflow.com/a/4151403/230513)方法。 – trashgod

回答

0

我認爲你在創建MaskFormatter對象時遇到了問題。 你創建對象與模式的掩碼,然後設置有效的字符後。

MaskFormatter formatter = new MaskFormatter("#"); 
formatter.setValidCharacters("123456789"); 
JFormattedTextField txt = new JFormattedTextField(formatter); 

完全這項工作,當你點擊文本框,並輸入任何數字(1-9只),它允許,但你輸入任何非數字則不允許。

感謝, Jignesh Gothadiya