https://pastein.ru/t/wT

  скопируйте уникальную ссылку для отправки


import java.awt.*; //используется для работы с графикой. т.е. рисование картинок, фигур и т.д.
import java.awt.event.*;

import javax.swing.*; // используется для создания и панели, на котором отображается графика.
import javax.imageio.*;
import java.io.*;

public class Main {
	
	public static void main(String[] args) {
		Frame window = new Frame();
	}

}

class Frame extends JFrame {
	public Frame() {
		Panel pan = new Panel();
		Container cont = getContentPane();
		cont.add(pan);
		setBounds(10,10, 800, 600);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
}

class Panel extends JPanel {
	private Image picture;
	private int x = 400, y = 100;
	private int direction = 2; //0 - влево, 1 - вверх, 2 - вправо, 3 - вниз.
	
	private class ActionOnKey implements KeyListener {//KeyListener - слушатель клавиатуры (клавиш)
		public void keyPressed(KeyEvent e) {
			int key = e.getKeyCode();
			if (key == 39 ||key == 68) {
				direction = 2;
			}
			if (key == 37 || key == 65) {
				direction = 0;
			}
			if (key == 38 || key == 87) {
				direction = 1;
			}
			if (key == 40 || key == 83) {
				direction = 3;
			}
			if (key == 27) {
				System.exit(0);
			}
			System.out.println("Вы нажали на клавишу под номером: " + key);
		}
		public void keyTyped(KeyEvent e) {}
		public void keyReleased(KeyEvent e) {
			int key_released = e.getKeyCode();
			System.out.println("Вы только что отпустили клавишу под номером: " + key_released);
		}
	}
	
	public Panel() {
		addKeyListener(new ActionOnKey()); //add Key Listеner - добавить слушатель клавиши, для нашей панели.
		//чтобы происходила обработка нажатых клавиш при открытой панели, то есть когда программа запущена и активна.
		setFocusable(true);
		//сделать фокус на нашей панели.
		
		try {
			picture = (ImageIO.read(new File("C:\\earth.png"))).getScaledInstance(100, 100, Image.SCALE_DEFAULT);
		}
		catch(IOException ex) {
			System.out.println("Возникла ошибка. Возможно файл не найден");
		}
		
		Timer time = new Timer(16, new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				if (direction == 0) {
					x--;
				}
				if (direction == 1) {
					y--;
				}
				if (direction == 2) {
					x++;
				}
				if (direction == 3) {
					y++;
				}
				if(x <= -100) {
					x = 790;
				}
				if(y <= -100) {
					y = 590;
				}
				if(x >= 810) {
					x = -10;
				}
				if(y >= 590) {
					y = -90;
				}
				repaint();
			}
			
		});
		time.start();
		
	}
	
	public void paintComponent(Graphics gr) {
		gr.clearRect(x-1, y-1, picture.getWidth(null)-1, picture.getHeight(null)-1);
		gr.drawImage(picture, x,y, null);
	}
}