トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Swingの基本:GUI部品のイベント処理(キーボード)

 キーボードのイベント処理

キーボードのイベント処理としては、MouseEventがあり、キー入力イベントなどを処理するKeyListenerがある。なお、KeyListenerは実装すべきメソッドが多く、implementしたクラスで実装すべきメソッドが多く煩雑なため、空のメソッドから構成されるKeyAdapterが用意されている。このクラスを継承することで、実装が必要なメソッドだけをオーバーライドすればよくなる。

キーボードのイベント処理の例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package sample.swing.event;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.InputEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class KeyEventSample extends JFrame {
    JLabel shift = new JLabel("SHIFT");
    JLabel ctrl = new JLabel("CTRL");
    JLabel alt = new JLabel("ALT");
    JLabel label = new JLabel(" ");
    public KeyEventSample() {
        super("キーイベントサンプル");
        JPanel modifiersPanel = new JPanel();
        shift.setEnabled(false);
        ctrl.setEnabled(false);
        alt.setEnabled(false);
        modifiersPanel.add(shift);
        modifiersPanel.add(ctrl);
        modifiersPanel.add(alt);
        add(modifiersPanel,BorderLayout.NORTH);
        label.setFont(new Font(label.getFont().getFamily(),label.getFont().getStyle(),64));
        add(label,BorderLayout.CENTER);
        addKeyListener(new KeyAdapter(){
            @Override
            public void keyPressed(KeyEvent e) {
                label.setText(""+e.getKeyChar());
                shift.setEnabled(((e.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) != 0));
                ctrl.setEnabled(((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) != 0));
                alt.setEnabled(((e.getModifiersEx() & InputEvent.ALT_DOWN_MASK) != 0));

            }
        });
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ×を押したときに終了するように
        pack();
        setVisible(true);
    }
    public static void main(String[] args) {
        new KeyEventSample();
    }
}

 課題

KeyEventSample.java

最終更新時間:2008年07月09日 22時32分24秒