Изображение появляется только после растягивания фрейма - Java
Формулировка задачи:
Такой код:
Почему изображение появляется только после растягивания фрейма?
public class SafeCracker extends JFrame{
//объявляем и инициализируем safePanel
URL url = getClass().getResource("img/safe.jpg");
Image safe = Toolkit.getDefaultToolkit().getImage(url);
ImagePanel safePanel = new ImagePanel(safe);
public SafeCracker(){
setTitle("Взломщик");
//запрещаем изменять размер окна
//setResizable(false);
//задаем менеджер размещения
setLayout(new GridBagLayout());
GridBagConstraints gridConstraints;
////размещаем safePanel при помощи менеджера
safePanel.setPreferredSize(new Dimension(330, 420));
safePanel.setLayout(new GridBagLayout());
gridConstraints = new GridBagConstraints();
gridConstraints.gridx = 0;
gridConstraints.gridy = 0;
gridConstraints.gridheight = 3;
add(safePanel, gridConstraints);
//подбираем оптимальные размеры окна
pack();
//узнаем размеры экрана и задаем параметры окна
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds((int) (0.5 * (screenSize.width - getWidth())), (int) (0.5 * (screenSize.height - getHeight())), getWidth(), getHeight());
setVisible(true);
}
public static void main(String[] args) {
//new SafeCracker().setVisible(true);
SafeCracker sc=new SafeCracker();
}
}
//класс для создания safePanel
class ImagePanel extends JPanel
{
private Image img;
public ImagePanel(Image img)
{
this.img = img;
}
public void paintComponent(Graphics g)
{
g.drawImage(img, 0, 0,null);
}
}Решение задачи: «Изображение появляется только после растягивания фрейма»
textual
Листинг программы
g.drawImage(img, 0, 0,null); this.updateUI();