フィールド系部品(JFFieldクラスの継承クラス)と埋め込みフィールド部品 (JFFieldFilledクラス)の入力モードを自動的に変更する機能について説明します。
当バージョンでは、部品がフォーカスを得た場合にのみ入力モードを設定します。以前とは異なり、フォーカスを失った場合は、フォーカスを得る前の入力モードには戻りません。このため、以下のような部品に入力を行う場合は、最後に入力を行ったテキスト編集部品で設定された入力モードのままになります。
JBK以外のGUIライブラリで提供される部品
入力モードの自動変更を行わないテキスト編集部品
上記の部品を利用しており、以前と同様の入力モード(通常は直接入力)で入力する場合は、それぞれの部品がフォーカスを得たときに、入力モードを設定する必要があります。
当機能のGUIライブラリ以外の部品の入力モード設定
インプットメソッドフレームワークを利用することにより、日本語入力システムの入力モードを設定することができます。この機能を利用して、入力を行う部品がフォーカスを得た場合に、希望する入力モードを設定してください。設定方法および詳細については、JDKのドキュメントの Input Method Framework を参照してください。
例
インプットメソッドフレームワークを利用した入力モード設定の例
以下の例では、フォーカスリスナを利用して java.awt.TextField 部品がフォーカスを得た場合に、英数字を直接入力できるようにしています。
/** * 入力モードを設定する java.awt.TextField を貼りつけるアプレット */ public class MySampleApplet extends Applet { /* * java.awt.TextFieldクラス */ java.awt.TextField textField = new TextField(): : /** * アプレットの実行開始時に一度だけ呼び出されるメソッド */ public void init() { : // TextFieldクラスにフォーカスリスナを登録 textField.addFocusListener(new MyFocusListener()); : } : } /** * 部品がフォーカスを得た場合に、自動的に入力モードを設定するためのリスナ */ class MyFocusListener implements FocusListener { /* * 部品がフォーカスを得た場合に呼び出されます。 */ public void focusGained(FocusEvent e){ // フォーカスを得た部品を取得 Component component = (Component)e.getSource(); // 部品の入力コンテキストを取得 InputContext inputContext = component.getInputContext(); if( inputContext!= null ){ // 入力を行う Unicode 文字セットのサブセットを設定する Subset[] subsets = new Subset[1]; // BASIC_LATINを指定した場合は、英数文字を直接入力できる subsets[0] = UnicodeBlock.BASIC_LATIN; inputContext.setCharacterSubsets(subsets); } } /* * 部品がフォーカスを失った場合に呼び出されます。 */ public void focusLost(FocusEvent e){ } } |
当機能で提供しているテキスト編集部品の入力モード設定
各部品には、日本語入力システムの自動制御を行うメソッドが用意されています。このメソッドを利用して入力を行う場合の日本語入力システムの入力モードを設定してください。設定可能なモードの詳細と設定方法については、GUIライブラリパッケージのリファレンスを参照してください。