こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

こんにちは

こんにちは

java初心者です。早速ですが質問させていただきます。
スペースキーを押したときに、ラベルにテキストを表示させる意図で
以下のようなコードを作りましたが、うまくいきません。
どなたか、ダメな点を指摘していただけないでしょうか。
よろしくお願いします。

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

class KeyClass extends KeyAdapter {

int keyshot;

public KeyClass() {
keyshot = 0;
}
public void keyPressed(KeyEvent e) {
int kc = e.getKeyCode();

if( kc == KeyEvent.VK_SPACE) {
if( keyshot == 0 ) { keyshot = 2 ;}
else keyshot = 1;
}
}
public void keyReleased(KeyEvent e) {
int kc = e.getKeyCode();
if( kc == KeyEvent.VK_SPACE) {
keyshot = 0;
}
}
public int checkShotKey() {
int ret = keyshot;
if(keyshot == 2) keyshot =1;
return ret;
}
}


import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

/*<applet code="keytest.class" width="300" height="100"></applet> */

public class keytest extends Applet implements Runnable {

KeyClass keyclass;
Thread th;
Label label1;
Label label2;

String st1;
int shotkey_state;
int count;

public void init() {
setBackground( new Color(120,60,80) );

keyclass = new KeyClass();
addKeyListener(keyclass);
label1 = new Label("スペース押してね");
label2 = new Label();

add(label1);
add(label2);

th = new Thread(this);
th.start();

shotkey_state=0;

}

public void run() {
while(true) {

try{
Thread.sleep(1000);
for(count=0; ; count++) {
shotkey_state = keyclass.checkShotKey();
if( (shotkey_state==1 || shotkey_state==2)&&(count%4==0) ) {
st1 = "スペース押したよ!!";
}
else st1 = "";

label2.setText(st1);
}
}
catch(InterruptedException ie) {}

}
}
}

投稿日時 - 2010-01-20 21:04:06

QNo.5609033

暇なときに回答ください

質問者が選んだベストアンサー

簡単かなと思ったら、結構、てこずりました。
いろいろ、問題があるようのですが。原因が明確ではないので
サンプルコードのみ載せます。実行して、
アプレットウィンドのウィンド内をクリックしてから、
スペースを押してください。

public class key_shot extends JApplet {

/**
* Initialization method that will be called after the applet is loaded
* into the browser.
*/

JLabel la,la1;
@Override
public void init() {

la = new JLabel("キー押してね");
la1 = new JLabel();

getContentPane().setLayout(new GridLayout(1,2));
getContentPane().add(la);
getContentPane().add(la1);

addKeyListener(new KeyAdapter() {

@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE){
la1.setText("スペース押したよ");
}
}

@Override
public void keyReleased(KeyEvent e) {
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(key_shot.class.getName()).log(Level.SEVERE, null, ex);
}
la1.setText("");
}
});


// TODO start asynchronous download of heavy resources
}

// TODO overwrite start(), stop() and destroy() methods
}

結構、勘違いしていることが多いな~~~(独り言)

投稿日時 - 2010-01-21 04:58:43

お礼

早速回答していただきありがとうございます
示していただいたコードを参考にさせていただきます

貴重な時間をさいて回答していただきありがとうございました

投稿日時 - 2010-01-21 07:14:25

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問