カーソルを操作する
ここではカーソルの操作だけを実装したいと思います。
選択した項目のページに飛ぶのは次でやります。
さて、まずは基礎にもありました
キー入力の処理です。
public void keyPressed(KeyEvent e){
int key=e.getKeyCode();
if(key==KeyEvent.VK_UP){
//カーソル位置を上に移動
this.dy-=CL;
//1番上のメニューを超えた場合
if(dy<y){
this.dy=y;
}
}
if(key==KeyEvent.VK_DOWN){
//カーソル位置を下に移動
this.dy+=CL;
//1番下のメニューを超えた場合
if(dy>y+(CL*MENU-CL)){
this.dy=y+(CL*MENU-CL);
}
}
//再描画
repaint();
}
今回はカーソルの移動なので、ボタンを1回押せばいいという処理ではありません。
↑↓でキーボードを操作したときにカーソルがメニュー項目内で移動するような処理を書きます。
前回 ( x , y ) でメニューの初期表示位置を定義し、そこからCL*iで位置をずらしました。
なのでカーソルにも同じようにCLを足し引きすることで項目を移動しています。
注意しなければならないのは、カーソルの移動範囲を制限しなければいけないことです。
制限してやらないと、画面外までカーソルが移動します。
制限の仕方は簡単で、メニューの一番上の位置を超えた場合とメニューの一番下の位置を超えた場合の
2通りを書いてやればいいわけです。
最後に描画処理です。
public void paintComponent(Graphics g){
super.paintComponent(g);
//メニューを画面に表示
for(int i=0;i<MENU;i++){
g.drawString(menuList[i],x,y+CL*i);
}
//カーソルの描画
g.drawImage(cursorImage,dx-CL,dy-CL,this);
}
前回の処理にカーソルの描画が加わってるだけですね。
今回は文字列を描画してカーソルのイメージを取り込みキー入力の処理をするという
ちょっとめんどぃ方法を取りました。
簡単な方法としてはJListクラスでリストを作る方法もありますが
描画位置を設定するのが非常に大変なため使ってません。
- サンプルのJARファイルはスポンサーリンクの↓に張ってあるので自由にダウンロードしてくださぃ♪
最終更新:2008年06月24日 12:25