私の頭のてっぺんから、私たちはタブ&のカスタムkeystroke
実装でこれを克服したと思います。InputMap
ActionMap
私たちが使用する実装では、「継続的な」編集を実行できます。つまり、ユーザーがEnterキーまたはTabキーを押すと、次の編集可能なセルに移動して編集を開始します。
InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
ActionMap am = table.getActionMap();
KeyStroke tabKey = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
Action moveNextCellAction = am.get(im.get(tabKey));
ContinousEditAction continousEditAction = new ContinousEditAction(table, moveNextCellAction);
im.put(tabKey, "Action.tab");
am.put("Action.tab", continousEditAction);
はContinousEditAction
、次の編集可能なセルを見つける責任があります。JTable.getEditingRow
基本的に、アクションが実行されると、 &メソッドを介して現在のセルを取得しJTable.getEditingColumn
ます(テーブルがを介して編集モードであることも確認する必要があります。そうでない場合は、 &JTable.isEditing
を使用する必要があります。実際、これを実行するだけでうまくいく可能性がありますが、これが私が問題に取り組んだ方法です)。JTable.getSelectedRow
JTable.getSelectedColumn
そこから、編集可能なセルが見つかるまでセルをウォークします。
基本的に、現在の行の最後までチェックしてから、行がなくなるまで次の行に移動します。実行する内容に応じて、テーブルの先頭(セル0x0)にループバックすることを選択できます。現在の位置に到達するまで歩きます。
注意してください。注意しないと、連続ループになる可能性があります:P。
JTable.setRowSelectionInterval
編集可能なセルが見つからない場合は、 &を使用して次に使用可能なセルを選択することをお勧めしJTable.setRowSelectionInterval
ます。それ以外の場合は、JTable.editCellAt(nextRow, nextCol)
しかし、これはすべて、あなたが達成したいことです。
また、同じアイデアをエンターキーに適用することもできます;)