Swing/CompositionEnabled の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/CompositionEnabled へ行く。
- Swing/CompositionEnabled の差分を削除
--- category: swing folder: CompositionEnabled title: JTableのセル編集を文字入力変換中からでも可能にする tags: [JTable, InputContext] author: aterai pubdate: 2008-06-23T13:43:43+09:00 description: IMEが直接入力以外で、一時ウィンドウが表示されていても、入力確定でセル編集を開始します。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTKG6DmuHI/AAAAAAAAAVc/WfOft65kSaQ/s800/CompositionEnabled.png --- * 概要 [#summary] `IME`が直接入力以外で、一時ウィンドウが表示されていても、入力確定でセル編集を開始します。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTKG6DmuHI/AAAAAAAAAVc/WfOft65kSaQ/s800/CompositionEnabled.png) * サンプルコード [#sourcecode] #code(link){{ JTable table = new JTable(model) { @Override protected boolean processKeyBinding( KeyStroke ks, KeyEvent e, int condition, boolean pressed) { boolean retValue = super.processKeyBinding(ks, e, condition, pressed); // if (!check.isSelected()) return retValue; if (KeyStroke.getKeyStroke('\t').equals(ks) || KeyStroke.getKeyStroke('\n').equals(ks)) { System.out.println("tab or enter typed"); return retValue; } if (getInputContext().isCompositionEnabled() && !isEditing() && !pressed && !ks.isOnKeyRelease()) { int selectedRow = getSelectedRow(); int selectedColumn = getSelectedColumn(); if (selectedRow != -1 && selectedColumn != -1 && !editCellAt(selectedRow, selectedColumn)) { return retValue; } } return retValue; } }; // table.setSurrendersFocusOnKeystroke(true); }} * 解説 [#explanation] - KBD{Tab}やKBD{Enter}キーでのセルフォーカス移動では編集開始しない - `JTable#processKeyBinding(...)`メソッドをオーバーライドして入力モードが確定したら選択セルの編集開始 - インプットメソッドが起動中かどうかは`Component#getInputContext#isCompositionEnabled()`メソッドで判断する - インプットメソッドが起動中かどうかは`Component#getInputContext#isCompositionEnabled()`メソッドで判断可能 * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/technotes/guides/imf/index.html Java Input Method Framework] - [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/im/InputContext.html#isCompositionEnabled-- InputContext#isCompositionEnabled() (Java Platform SE 8)] * コメント [#comment] #comment #comment