検索履歴を確認すると「Javaでのフォーカス移動」についての記事が結構読まれていました。この記事を読んでEnterキーによるフォーカス移動を理解するのは困難だと感じ、補足記事を書きたいと思います。
まずはキーチェック用のクラスを作成します。以下のクラス(KeyCheck.java)としてEnterキー取得を実装します。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
キー入力チェック
*/
public class KeyCheck implements KeyListener{
/**
キーが押された
*/
public void keyPressed( KeyEvent e){
JTextField txt = (JTextField)e.getSource();
if ( e.getKeyCode() == KeyEvent.VK_ENTER ){
try{
txt.transferFocus();
}catch(Exception ex){
System.out.println(ex.toString());
}
}
}
public void keyTyped( KeyEvent e){}
public void keyReleased( KeyEvent e){}
}
パッケージにする場合は先頭にpackage文を記載します。このクラスをEnterキーを入力されたときに動作するテキストフィールドにaddKeyListenerを使って拡張します。スコープは広めにとっておきます。
private JTextField txtOrderNo = new JTextField(); // 注文番号入力
UIを構築するときにキーリスナーを加えます。コンストラクターに記載すると良いと思います。
txtOrderNo.addKeyListener( new KeyCheck() ); // キーリスナーを追加
これでEnterキーを入力されたときに次のコンポーネント(UI部品、テキストフィールドなど)にフォーカスが移動します。最初の記事を書いたのが2005年1月ですので、17年前くらいになるのですね。実装が難しければ、小さいサンプルを作ってテストをしてください。
コメントを残す