- PR -

テーブルセルへの直接入力

投稿者投稿内容
ショウ
会議室デビュー日: 2004/10/14
投稿数: 15
投稿日時: 2004-11-01 14:53
「半角英字」の入力モードであればキー押下でエディタが起動しますが、「全角ひらがな」の入力モードの場合、小さなウインドウが表示され、その中に入力した文字が表示されてしまいます。
JTableにキーリスナを追加し、キーイベントを監視してみたのですが、「半角英字」であればキー押下でイベントが発生していました。
しかし、「全角ひらがな」の場合、イベントが発生していませんでした。

DefaultCellEditorをJTextField指定で生成後、設定し実行しましたが、上記のような現象が起きてしまいます。
リスナ等は追加していないので、余計な設定はしていないつもりですが、何か不必要な設定や必要な設定がもれていたりするのでしょうか?
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-11-02 17:35
おおっと、それはちょっと難しそうですね…

Windows2000+JDK1.4環境で、JTableのInputContextをオーバーライドし、#dispatchEvent(AWTEvent)の呼び出しをチェックしてみました。どうもJTable自体にフォーカスがある状態&全角入力起動状態では、そもそもInputContextに対してKeyPressedイベントが飛んでいないようです。(KeyReleasedは拾えていましたが。)

ですので、JTable自体にフォーカスがある状態で、全角入力起動状態での何かのキー押下をトリガーにして、テーブルのセルエディタを起動するという仕組みは、ちょっと厳しいかな、と
思います。

カラムの選択が変更されるたびに、選択されたカラムを常にエディット状態+キャレット所有状態にする方がいくらか簡単かもしれません。ですが、それでもTableCellEditorの自作とか、JTableのキーバインドの上書き(ActionMapおよびInputMapの自作設定)、PropertyChangeListener自作、あたりの作業が必要になると思います。
具体的にどうするのかは、調べてみないと分かりません。ごめんなさい。

スキルアップ/キャリアアップ(JOB@IT)