Так что в настоящее время у меня есть проблема, что большое изображение будет закрывать меньшие изображения в моей программе, когда я пытаюсь графически отобразить их в Java. Я хотел бы знать, как вывести определенные изображения в переднюю часть окна, чтобы большое фоновое изображение оставалось на заднем плане. Кроме того, я не верю, что в моей программе есть возможность просто реализовать изображения в обратном порядке.
Вот код, который я использовал:
мой класс менеджера изображений с методом, который я использую для реализации изображений в окне,
import java.awt.*;
import javax.swing.*;
public class ImageManager extends JFrame {
private ImageIcon image1;
private JLabel label1;
private ImageIcon image2;
private JLabel label2;
private ImageIcon image3;
private JLabel label3;
public ImageManager() {
}
public void addBackground() {
image3 = new ImageIcon(getClass().getResource("background.png"));
label3 = new JLabel(image3);
add(label3);
}
public void addSeaweed() {
image1 = new ImageIcon(getClass().getResource("seaweed.png"));
label1 = new JLabel(image1);
add(label1);
}
public void addUnderwatervolcano() {
image2 = new ImageIcon(getClass().getResource("underwatervolcano.png"));
label2 = new JLabel(image2);
add(label2);
}
}
и вот где я использую методы из ImageManager:
метод отображения изображения морских водорослей с использованием метода grow (),
public Seaweed() {
setLayout(new FlowLayout());
World.gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
World.gui.setVisible(true);
World.gui.pack();
World.gui.setTitle("seaweed and underwatervolcano");
carbon = 0;
}
public void grow() {
if(World.getOceanCarbon() >= 10) {
addCarbon(10);
World.addOceanCarbon(-10);
World.gui.addSeaweed();
World.gui.pack();
}
}
и вот метод в другом классе, который использует метод grow () из класса Seaweed и gui.addBackground () из класса ImageManager,
public static void runWorld() {
gui.addBackground();
UnderwaterVolcano volcano = new UnderwaterVolcano();
Seaweed seaweed = new Seaweed();
volcano.erupt();
seaweed.grow();
gui.setMinimumSize(new Dimension(905, 560));
}
}
Я хотел бы знать, как мне сделать так, чтобы gui.addBackground () не закрывал изображение морской водоросли из gui.addSeaweed () (которая была вызвана в методе seaweed.grow ()), все еще вызывая графический интерфейс. addBackground () перед вызовом gui.addSeaweed (). Можно ли в любом случае манипулировать при вызове метода порядком, в котором изображения отображаются в окне? Я не очень хорошо понимаю JFrame, поэтому, пожалуйста, будьте очень объяснительными с вашими ответами, вся помощь приветствуется.