- - PR -
テーブルセルへの直接入力
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-11-01 14:53
「半角英字」の入力モードであればキー押下でエディタが起動しますが、「全角ひらがな」の入力モードの場合、小さなウインドウが表示され、その中に入力した文字が表示されてしまいます。
JTableにキーリスナを追加し、キーイベントを監視してみたのですが、「半角英字」であればキー押下でイベントが発生していました。 しかし、「全角ひらがな」の場合、イベントが発生していませんでした。 DefaultCellEditorをJTextField指定で生成後、設定し実行しましたが、上記のような現象が起きてしまいます。 リスナ等は追加していないので、余計な設定はしていないつもりですが、何か不必要な設定や必要な設定がもれていたりするのでしょうか? |
|
投稿日時: 2004-11-02 17:35
おおっと、それはちょっと難しそうですね…
Windows2000+JDK1.4環境で、JTableのInputContextをオーバーライドし、#dispatchEvent(AWTEvent)の呼び出しをチェックしてみました。どうもJTable自体にフォーカスがある状態&全角入力起動状態では、そもそもInputContextに対してKeyPressedイベントが飛んでいないようです。(KeyReleasedは拾えていましたが。) ですので、JTable自体にフォーカスがある状態で、全角入力起動状態での何かのキー押下をトリガーにして、テーブルのセルエディタを起動するという仕組みは、ちょっと厳しいかな、と 思います。 カラムの選択が変更されるたびに、選択されたカラムを常にエディット状態+キャレット所有状態にする方がいくらか簡単かもしれません。ですが、それでもTableCellEditorの自作とか、JTableのキーバインドの上書き(ActionMapおよびInputMapの自作設定)、PropertyChangeListener自作、あたりの作業が必要になると思います。 具体的にどうするのかは、調べてみないと分かりません。ごめんなさい。 |
