keyPressed | キーが打たれた瞬間に発生するイベント |
---|---|
keyReleased | キーが離された瞬間に発生するイベント |
keyTyped | キーが入力されたことを示すイベント |
KeyAdapterクラスはKeyListenerインターフェースを実装済みのクラスです。
keyPressedとkeyTypedの違い
・大文字のAを入力する際、Shiftキー + aキー を押下しますが、
まずShiftキー押下でkeyPressが発生し、aキー押下でkeyPressが続けて発生し、その後keyTypedが発生します。
・特殊キー(Shift、Alt、Ctrl、矢印など)はkeyPressedで補足できるが、keyTypedでは補足できません。
・全角「か」を入力する際、kキー + aキーを押下しますが、keyPressは発生しませんが、keyTypedは発生します。
つまり特殊キーを補足して処理を行いたい場合はkeyPressを使用し、文字入力にた対して処理を行いたい場合はkeyTypedを使用します。
JavaではBackspace、Del、Enter、Esc、Spaceキーは特殊キーではなくkeyTypedが発生します。
package MyPackage1; import java.awt.*; import java.awt.event.*; public class KeyEventSample01 { //エントリーポイント public static void main(String args[]){ new KeyEventSample01(); } Frame frm; TextField txt1; TextField txt2; Label lbl1; Label lbl2; //コンストラクタ public KeyEventSample01(){ //フレームを作成します。 frm = new Frame("KeyEventSample01"); frm.setSize(400, 300); frm.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent ev){ System.exit(0); } }); // txt1 = new TextField(); txt1.addKeyListener(new KeyAdapter_txt1()); txt2 = new TextField(); txt2.addKeyListener(new KeyAdapter_txt2()); lbl1 = new Label(); lbl2 = new Label(); // frm.setLayout(new GridLayout(4,1)); frm.add(txt1); frm.add(txt2); frm.add(lbl1); frm.add(lbl2); //フレームを表示します。 frm.setVisible(true); } private class KeyAdapter_txt1 extends KeyAdapter{ public void keyPressed(KeyEvent ev){ lbl1.setText("keyPressed:KeyChar[" + ev.getKeyChar() + "] KeyCode[" + ev.getKeyCode() + "]が押されました。" ); } } private class KeyAdapter_txt2 extends KeyAdapter{ public void keyTyped(KeyEvent ev){ lbl2.setText("keyTyped:KeyChar[" + ev.getKeyChar() + "] KeyCode[" + ev.getKeyCode() + "]が押されました。" ); } } }
0 件のコメント:
コメントを投稿