GUI. Dodawanie wielu obrazów do Jframe

0

Witam, potrzebuje waszej porady. Jak można dodać do jednego JFrame wiele obrazów. Chodzi mi o to żeby jeden obraz był tłem( przykładowo zdjęcie stołu) a inny obraz nachodził na ten obraz(czyli np książka) .
Próbowałem tak

import javax.swing.*;

public class Gui {
    Gui(){
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        JPanel panel1 = new JPanel();
        frame.setBounds(200,200,600,600);
        frame.setTitle("Play");     
        final JLabel label = new JLabel(new ImageIcon("graphic/Table.png")); 
        frame.add(label);
        final JLabel label1 = new JLabel(new ImageIcon("graphic/7h.png"));
        frame.add(label1);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setLayout(null);
        frame.setResizable(false);
        frame.setVisible(true);

    }
}
0

@wele123 Do rysowania użyj metody paint

Tu masz przykład. image1 będzie twoim tłem a image2 go pokryje.


public void paint(Graphics g){
            super.paint( g);
        Graphics2D g2d = (Graphics2D) g.create();   

        g2d.drawImage(image1 ,0 , 0 , this);
        g2d.drawImage(image2 ,0 , 0 , this);
}
0

Czy na tym tle (zdjęcie stołu) będą tylko inne obrazki? Wtedy, jak napisał @Marcin902, nadpisz metodę paint lepiej paintComponent).

0

Nie chce malować. Chcę wrzucić jedno zdjęcie które będzie tłem drugiego

0

Po pierwsze, instrukcje

        frame.pack();
        //i
        frame.setLayout(null);

gryzą się. Pierwsza nakazuje rozmieszczenie komponentów wg obowiązującego menadżera rozkładu i dopasowanie wielkości okna do komponentów, druga wyłącza menadżera rozkładu. Poniższy kod musisz dopasować do rozwiązania, które wybierzesz, ja zakładam, że usuniesz

frame.pack();

Wtedy
BufferedImage image1 = ImageIO.read("graphic/Table.png");

BufferedImage image1 = ImageIO.read(new File("graphic/Table.png"));
BufferedImage image2 ...;
...
public void paintComponent(Graphics g)
{
     super.paintComponent(g); //wypełnia odpowiedni panel kolorem tła,  nie jest konieczne, jeżeli rysunek stołu zajmuje cały panel
     g.drawImage(image1,0,0,this);
     g.drawImage(image2,...,...,this);
}
0

Wszystko fajnie ale jak to wpisuje to funkcja BufferedImage image1 = ImageIO.read("graphic/Table.png"); read wywala że przyjmuje stringa.

0

Poprawione

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0