今日は私の心が揺れる問題です。私は、ユーザがスペースを押すたびに動く赤い矩形を描こうとしています。問題は、私がスペースを押すたびに矩形が動かないことです。なぜ、どのように私はこの問題を解決できる任意のアイデアですか?JAVAのKeyBoard入力でアニメーションを実行するにはどうすればよいですか?
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Animation extends JPanel implements ActionListener, KeyListener{
int x = 0, y = 0, velx=0;
public Animation(){
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public static void main(String args[]){
JFrame frame = new JFrame("Animation Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(500, 500);
Animation a = new Animation();
frame.add(a);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, 500, 500);
g.setColor(Color.RED);
g.fillRect(x, 50, 30, 20);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
x = x + velx;
repaint();
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
int keyCode = e.getKeyCode();
if(keyCode == e.VK_SPACE){
velx = 2;
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}
なぜあなたはAWTをインポートしなかったし、スイング?どちらか一方を使用してください。また、質問に「awt」タグと「swing」タグを追加すると、フィードバックが増えるかもしれません:) –
基本的には、以下の答えで 'actionPerformed'が呼び出されることはまずありません。 'KeyListener'イベントに更新ロジックを置く必要があります。 – Gorbles
[キーバインディングの使用方法](http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – MadProgrammer