2012-02-21 60 views
0

情景是這樣的:用戶編輯一個單元格,然後按Tab鍵。編輯被停止,並且值在模型中。但是,如果postUpdateTestFailed()返回true,我想將選擇移回剛剛編輯的單元格,以便用戶可以進行一些修改。問題是,它不起作用。它適用於其他任何東西,但在我的情況下,選定的單元格... :(因爲用戶按TAB鍵,聚焦/選定的單元格總是下一個單元格,看起來像我的選擇改變在這種情況下被忽略。 :)如何在TAB被按下後回到JTable中的編輯單元格?

public void tableChanged(TableModelEvent tme) { 
    int row = tme.getFirstRow(); 
    int col = tme.getColumn(); 
    int type = tme.getType(); 
    switch (type) { 
     case TableModelEvent.UPDATE: 
      currentRow = areenTable.convertRowIndexToView(row); 
      currentColumn = areenTable.convertColumnIndexToView(col); 
      if (postUpdateTestFailed()) { 
       // if the test fails, I want to move back to the edited cell 
       areenTable.changeSelection(currentRow, currentColumn, false, false); 
      } 
      break; 

     // the rest of switch 

    } // switch 
} // tableChanged() method 

編輯1:我希望有人經歷過同樣的問題,解決它在某種程度上...

編輯2:我通常會做這在我自己的細胞編輯器實現,並在驗證失敗時阻止提交。不幸的是,在這種特殊情況下,我必須在之後調用postUpdateTestFailed()更改已提交...然後將光標定位到先前編輯的單元格。奇怪的是,我可以移動到任何其他單元格,但最後編輯!我認爲這是一個錯誤。

+1

爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-02-21 16:26:48

+0

安德魯,如果有人需要上述問題的SSCCE,那麼該人不應該麻煩回答...只是忽略我的問題,一切都會好起來的。但我現在要編輯一下。 – DejanLekic 2012-02-21 16:33:06

+1

*「如果有人需要SSCCE」*誰說我需要它?這只是一個SSCCE *鼓勵*我更深入地看待問題。順便說一句 - 你*需要*一個答案? – 2012-02-21 17:29:51

回答

相關問題