ホームページ > Java > &#&チュートリアル > Javaでキーの押下に基づいて画像を移動するにはどうすればよいですか?

Javaでキーの押下に基づいて画像を移動するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-06 07:06:15
オリジナル
881 人が閲覧しました

How to Move an Image in Java Based on Key Presses?

Java でキー入力を聞きながら画像を動かす方法

Java では、スイング タイマーとキーの組み合わせを使用できますキー押下を聞きながら画像を動かすためのバインディング。方法は次のとおりです:

  1. スイング タイマーの作成: スイング タイマーは、タスクを定期的に実行するために使用されます。この場合、これを使用して画像の位置を更新できます。
  2. キー バインドの定義: キー バインドは、キーを特定のアクションに関連付けます。キー バインドを使用すると、ユーザーがキーを押したことを検出し、それに応じて画像を移動できます。
  3. 画像の描画: JPanel のPaintComponent メソッドをオーバーライドして、現在の位置に画像を描画します。 .

コード例:

ここにありますスイング タイマーとキー バインドを使用して、キー押下を聞きながら画像を動かす方法を示すコード例:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ImageMoveOnKeyPress extends JPanel implements ActionListener {

    private Image image; // The image to be moved
    private int x, y; // The current position of the image

    private Timer timer; // The Swing Timer to update the image position
    private KeyBindings keyBindings; // The Key Bindings to detect keypresses

    public ImageMoveOnKeyPress() {
        // Load the image
        image = Toolkit.getDefaultToolkit().getImage("image_path");

        // Set the initial position of the image
        x = 50;
        y = 50;

        // Create a Swing Timer to update the image position
        timer = new Timer(10, this); // 10 milliseconds delay
        timer.start();

        // Create Key Bindings to detect keypresses
        keyBindings = new KeyBindings();
        getInputMap().put(KeyEvent.VK_LEFT, "left");
        getInputMap().put(KeyEvent.VK_RIGHT, "right");
        getInputMap().put(KeyEvent.VK_UP, "up");
        getInputMap().put(KeyEvent.VK_DOWN, "down");
        getActionMap().put("left", keyBindings.new MoveLeftAction());
        getActionMap().put("right", keyBindings.new MoveRightAction());
        getActionMap().put("up", keyBindings.new MoveUpAction());
        getActionMap().put("down", keyBindings.new MoveDownAction());
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, x, y, null);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // Update the image position based on keypress
        if (keyBindings.isLeftPressed()) {
            x -= 1;
        } else if (keyBindings.isRightPressed()) {
            x += 1;
        } else if (keyBindings.isUpPressed()) {
            y -= 1;
        } else if (keyBindings.isDownPressed()) {
            y += 1;
        }

        // Repaint the panel to display the moved image
        repaint();
    }

    private class KeyBindings {
        private boolean leftPressed, rightPressed, upPressed, downPressed;

        public boolean isLeftPressed() {
            return leftPressed;
        }

        public void setLeftPressed(boolean leftPressed) {
            this.leftPressed = leftPressed;
        }

        public boolean isRightPressed() {
            return rightPressed;
        }

        public void setRightPressed(boolean rightPressed) {
            this.rightPressed = rightPressed;
        }

        public boolean isUpPressed() {
            return upPressed;
        }

        public void setUpPressed(boolean upPressed) {
            this.upPressed = upPressed;
        }

        public boolean isDownPressed() {
            return downPressed;
        }

        public void setDownPressed(boolean downPressed) {
            this.downPressed = downPressed;
        }

        private class MoveLeftAction extends AbstractAction {
            @Override
            public void actionPerformed(ActionEvent e) {
                leftPressed = true;
            }
        }

        private class MoveRightAction extends AbstractAction {
            @Override
            public void actionPerformed(ActionEvent e) {
                rightPressed = true;
            }
        }

        private class MoveUpAction extends AbstractAction {
            @Override
            public void actionPerformed(ActionEvent e) {
                upPressed = true;
            }
        }

        private class MoveDownAction extends AbstractAction {
            @Override
            public void actionPerformed(ActionEvent e) {
                downPressed = true;
            }
        }
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
ログイン後にコピー

以上がJavaでキーの押下に基づいて画像を移動するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート