Не могу добавить ImageIcon в JFrame
Я пытался добавить изображение к JFrame
но я не могу этого сделать.
Я просмотрел онлайн-уроки и другие подобные вопросы, но ничего не помогло.
ImageIcon wiz = new ImageIcon("wizard.png");
ImageIcon assassin = new ImageIcon("assassin.png");
JFrame frame = new JFrame("Select");
frame.setBounds(50, 50,1000, 1000);
JButton w = new JButton("Wizard");
JButton a = new JButton("Assasin");
JFrame f = new JFrame("Image");
JLabel img1 = new JLabel(wiz);
frame.setLayout(null);
f.setLayout(null);
f.setIconImage(wiz.getImage());
w.setBounds(30,380,100,60);
frame.add(w);
a.setBounds(200, 380, 100, 60);
frame.add(a);
f.setVisible(true);
frame.setVisible(true);
1 ответ
Я думаю, что основная проблема в вашей программе заключается в том, что вы пробуете абсолютное расположение компонентов (например, JLabel
) с помощью setLayout(null)
а также setBounds()
на комплектующие.
В Swing правильный способ размещения компонентов - использование менеджеров компоновки. См. Это руководство для получения подробной информации об использовании менеджеров макета: https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
В качестве примера программы я успешно установил изображения (как JFrame
значок и внутри JFrame
Оглавление) в приведенной ниже программе. Попробуйте и посмотрите.
Это скриншот моего образца JFrame
,
import javax.swing.*;
public class FrameWithIcon
{
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Since I'm not setting a layout manager to contentPane, it's default (BorderLayout) is used
//This sets the image in JFrame's content area
f.getContentPane().add(new JLabel(new ImageIcon("star.png")));
//This sets JFrame's icon (shown in top left corner of JFrame)
f.setIconImage(new ImageIcon("star.png").getImage());
f.setBounds(300, 200, 400, 300);
f.setVisible(true);
}
}