Heim > Java > javaLernprogramm > Wie verschiebt man ein Bild in Java basierend auf Tastendrücken?

Wie verschiebt man ein Bild in Java basierend auf Tastendrücken?

Barbara Streisand
Freigeben: 2024-12-06 07:06:15
Original
881 Leute haben es durchsucht

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

So bewegen Sie ein Bild, während Sie einem Tastendruck in Java zuhören

In Java können Sie eine Kombination aus Swing-Timer und Taste verwenden Bindungen, um ein Bild zu bewegen, während ein Tastendruck abgehört wird. So geht's:

  1. Erstellen Sie einen Swing-Timer: Ein Swing-Timer wird verwendet, um eine Aufgabe regelmäßig auszuführen. In diesem Fall können Sie damit die Position des Bildes aktualisieren.
  2. Tastenzuordnungen definieren:Tastenzuordnungen verknüpfen Tasten mit bestimmten Aktionen. Sie können Tastenkombinationen verwenden, um zu erkennen, wann ein Benutzer eine Taste drückt und das Bild entsprechend verschiebt.
  3. Zeichnen Sie das Bild: Überschreiben Sie die paintComponent-Methode eines JPanel, um das Bild an seiner aktuellen Position zu zeichnen .

Beispielcode:

Hier ist ein Beispielcode Das zeigt, wie man einen Swing-Timer und Tastenkombinationen verwendet, um ein Bild zu bewegen, während man auf einen Tastendruck hört:

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();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verschiebt man ein Bild in Java basierend auf Tastendrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage