Невозможно отобразить изображение на изображении - PullRequest
0 голосов
/ 09 марта 2019

Я пытался показать фон и характер для проекта, который я пытаюсь сделать (игра).

Когда я отображаю одно из изображений, я не вижу другое.

import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;

public class Main{
    private static final Keys jeez = null;

    public static void main(String[] args) throws IOException {
        int x = 250;
        int y = 250;
        BufferedImage myPicture = ImageIO.read(new File("C:\\Users\\milkg\\Desktop\\Game\\background.png"));
        JPanel background = new JPanel();
        JLabel picLabel = new JLabel(new ImageIcon(myPicture));
        background.add(picLabel);
        BufferedImage myPicture1 = ImageIO.read(new File("C:\\Users\\milkg\\Desktop\\Game\\background.png"));
        JPanel character = new JPanel();
        JLabel picLabel1 = new JLabel(new ImageIcon(myPicture1));
        character.add(picLabel1);
        JFrame Window = new JFrame("Something");
        Window.setSize(1280, 720);
        Window.setDefaultCloseOperation(Window.EXIT_ON_CLOSE);
        Window.setLocation(200, 100);
        Window.setResizable(false);
        Window.add(background);
        Window.add(character);
        Keys Key = new Keys(x, y, Window);
        Window.setVisible(true);
    }
}

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Прежде всего, пути ботов в загруженном вами коде указывают на один и тот же файл.Тогда не будет работать отображение надписи над надписью простым добавлением надписей друг на друга.

Я предлагаю создать подкласс JPanel (), в котором вы переопределите метод компонента рисования, например:

JPanel panel = new JPanel(){
   public void paintComponent(Graphics g){
      super.paintComponent(g);
      g.drawImage(yourImage,x,y,imageObserver);
   }
};
0 голосов
/ 09 марта 2019

изображение на изображении

Если вы хотите отобразить одно изображение поверх фонового изображения, вам нужно добавить изображение переднего плана к фоновому изображению.

Таким образом, базовая логика будет выглядеть примерно так:

JLabel foreground = new JLabel( new ImageIcon(...) );
JLabel background = new JLabel( new ImageIcon(...) );
background.setLayout( new BorderLayout() );
background.add( foreground );
window.add( background );

Обратите внимание, что нет необходимости использовать панели только для отображения JLabel. Панель содержимого JFrame - это JPanel, поэтому вы можете добавить метку непосредственно к фрейму.

пытается сделать (Игра)

Тем не менее, если вы пытаетесь создать игру, вы можете захотеть рисовать на заказ, чтобы вы могли контролировать размещение каждого изображения:

Основная логика в этом случае будет:

JPanel gamePane = new JPanel()
{
    @Override
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawImage(background, ?, ?, this);
        g.drawImage(foreground, ?, ?, this);
    }
};

Теперь изображение на переднем плане будет рисовать поверх фонового изображения.

Конечно, вы должны разработать правильный класс с методами, позволяющими перемещать «персонажа» на «фоне».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...