Вы можете добавлять изображения на JLabel. Если вы хотите добавить другие компоненты поверх изображения, вы должны добавить изображение в JPanel. Таким образом, вы будете иметь управление макетом. Для этого решения необходимо выполнить ряд шагов:
Создайте класс, который расширяет JPanel и включает в себя читатель и элемент paintComponent
public class ImageJPanel extends JPanel {
public ImageJPanel() {
try {
myImage = ImageIO.read(new File("singer.jpg"));
} catch (IOException ex) {
System.out.println("No image! " + ex.getMessage());
}
}
@Override
public void paintComponent(Graphics g) {
g.drawImage(myImage, 0, 0, null);
}
private BufferedImage myImage;}
Установите макет вашего JDialog на BorderLayout.
Добавьте еще одну JPanel p, сделайте ее непрозрачной, чтобы увидеть изображение, p.setOpaque(false);
с JTextFields, JLabels и т. Д. На свою панель контента.
Добавьте экземпляр ImageJPanel в центр макета границы.
Вот пример конструктора для класса Tester, расширяющего JDialog:
public Tester() {
setLayout(new BorderLayout());
JPanel myImagePanel = new ImageJPanel();
add(myImagePanel);
JPanel workPanel = new JPanel();
workPanel.setOpaque(false);
workPanel.add(new JLabel("a label"));
workPanel.add(new JTextField(10));
myImagePanel.add(workPanel);
pack();
}