0

みなさん、こんにちは。netbeans7.2.1を使用していて、キーボード入力のチュートリアルに従っていました。

このコードは、JFrameに円を描く必要がありますが、それを移動するには、矢印キーを入力する必要がありますが、そうではありません。

ご協力ありがとうございました :)

package gamefirstclass;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;

public class GameFirstClass extends JFrame {
//Variables

    int y, x;
//Double Buffer
    private Image dbImage;
    private Graphics dbg;

//Window Basics
    public GameFirstClass() {
        addKeyListener(new AL());
        setTitle("Add window title");
        setSize(800, 700);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        x = 150;
        y = 150;

    }
// main

    public static void main(String[] args) {
        new GameFirstClass();
    }
    //Controls
    public class AL extends KeyAdapter {

        @Override
        public void keyPressed(KeyEvent event) {
            int keyCode = event.getKeyCode();
            if (keyCode == event.VK_LEFT)
            {
                x--;
            }
            if (keyCode == event.VK_RIGHT)
            {
                x++;
            }
            if (keyCode == event.VK_UP)
            {
                y--;
            }
            if (keyCode == event.VK_DOWN)
            {
                y++;
            }
        }

        @Override
        public void keyReleased(KeyEvent event) {
        }
    }
//Double Buffer

    @Override
    public void paint(Graphics g) {
        dbImage = createImage(getWidth(), getHeight());
        dbg = dbImage.getGraphics();
        paintComponent(dbg);
        g.drawImage(dbImage, 0, 0, this);
    }

    public void paintComponent(Graphics g) {
        g.fillOval(x, y, 15, 15);
        repaint();
    }
}
4

1 に答える 1

2

さて、1つの問題があります:あなたのif statements!
基本的に、あなたkeyListenerの中で、それらif statementsの後のために実行しないでくださいsemicolon
ブロックは残っているすべてであり、への変更xは同じです。それらを削除するだけで、semicolonsうまくいくと思います。また、毎回たくさん生成しているので、からは
呼び出さないでください。これが重要かどうかはわかりませんが、機能することを確認するためにあなたに電話する必要があります。repaint()paintComponent()repaintssetFocusable(true)JFrameKeyListener

幸運を!

于 2013-02-15T02:33:25.580 に答える