Summary
JTableのセル編集自動開始をファンクションキーの場合だけ無効にします。Swing - JTable starts editing when F3 is pressed - howto disable?を参考にしています。
Screenshot

Advertisement
Source Code Examples
JTable table = new JTable(model) {
// Swing - JTable starts editing when F3 is pressed - howto disable?
// https://community.oracle.com/thread/1350192
@Override public boolean editCellAt(int row, int column, EventObject e) {
if (e instanceof KeyEvent) {
int c = ((KeyEvent) e).getKeyCode();
if (KeyEvent.VK_F1 <= c && c <= KeyEvent.VK_F12) {
return false;
}
}
return super.editCellAt(row, column, e);
}
};
View in GitHub: Java, KotlinDescription
ignore: F1,F4-F7,F9-- チェックボックスをチェックしている場合、ファンクションキー(ShiftやCtrl+Functionキーも含む)を押してもセルの編集が開始されないように
JTable#editCellAt(...)メソッドをオーバーライド
- チェックボックスをチェックしている場合、ファンクションキー(ShiftやCtrl+Functionキーも含む)を押してもセルの編集が開始されないように
table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);- F2は除くキー入力でのセルの編集開始を禁止
- JTableでキー入力によるセル編集開始を禁止する
- 上記のサンプルでは
InputMap、ActionMapにF3キーでbeepが鳴るようにキーストロークとアクションを追加- このキーストロークは
JTable#editCellAtメソッドでのキー入力チェックとは別に実行されるので、デフォルトのF2キーでのstartEditing、F8キーでのfocusHeaderはJTable#editCellAt(...)の戻り値とは関係なく有効になる
- このキーストロークは
JTable#processKeyBinding(...)をオーバーライドしてキー入力自体を無視するとInputMapに追加したキーストロークも除外されるため、これらのアクションも実行されない