GUI に何のライブラリを使っているか書かないとみんな回答しづらいと思います。
AWT, Swing, SWT などがその一例です。どれを使っていますか?
AWT, Swing, SWT のいずれを使っていたとしても、キーボード操作はイベントとして処理されるという基本は同じです。
それは理解できているでしょうか?
キーボード操作の検知とハンドリングはライブラリが行ってくれるのが一般的です。
イベントリスナーというのをあらかじめライブラリに登録しておくことで、キーボード操作検知時にその処理が呼び出されるというものです。
やりたいことを実現する方法にも簡単な方法とその発展形があります。
簡単な方法は、現在の状態を表す変数を定義し、キーボード操作によりその状態を変えて行くという方法です。
各処理はその状態変数によって動作が変わるように実装します。
例えば以下のような感じです(雰囲気実装ですのであしからず)。
lang
1public class MainApplication ... implements KeyListener {
2
3 // 現在の場面を 1 からの番号で表すことにする。
4 private int sceneNumber = 1;
5
6 public void init() {
7 // キーボード操作が発生した場合、keyPressed が呼び出されるよう登録する。
8 addKeyListener(this);
9 }
10
11 public void keyPressed(KeyEvent e) {
12 swtich (sceneNumber) {
13 case 1:
14 case 2:
15 case 3:
16 case 4:
17 // 場面 1, 2, 3, 4 の場合は、エンターキーが押されたら場面を進める。
18 switch (e.getKeyCode()) {
19 case KeyEvent.VK_ENTER:
20 sceneNumber = sceneNumber + 1;
21 break;
22 }
23 break;
24 case 5:
25 // 場面 5 は別の操作を行う。
26 switch (e.getKeyCode()) {
27 case KeyEvent.VK_UP:
28 // 上キーを押したとき。
29 // ...
30 break;
31 case KeyEvent.VK_DOWN:
32 // 下キーを押したとき。
33 // ...
34 break;
35 }
36 break;
37 }
38
39 // 他の場所でも sceneNumber を使って処理をする。例えば場面によって画面の表示が変わるなど。
40
41}
場面が変われば操作も変わるということは往々にしてあると思うので、switch 文で場面ごとに操作が変わるようにします。
この方法だと場面の数だけ分岐の処理を1つのソースコードに全部書く必要があります。
場面によって変わる処理はキーボード操作だけではないでしょうから、それらも全部同じような書き方になります。
場面の数が少なければこの方法でも十分実装できます。入門編です。
発展形では場面毎に処理が切り替えられるような方法を考えます。
例えば各場面を別々のパネルに実装して、場面の切り替えのタイミングでパネルを切り替えるなどです。
そうした場合、場面をまたがって保持する情報がでてくるでしょうから、
情報を保存するクラスを切り分けて実装したり、場面をまたがって必要となる処理を共通クラスとしてくくり出したり、
などを行うことになるでしょう。
GUI プログラミングの知識もそうですが、必要に応じて複数クラスを実装することになるので Java プログラミングの応用力で必要になります。
場面が多くなればこの方法をとらざるを得なくなるでしょう。
退会済みユーザー
2015/04/06 04:42
2015/04/06 05:29
2015/04/06 05:31
退会済みユーザー
2015/04/07 13:58