Swing: не отображается изображение во фрейме - Java

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Изучаю Java по книге "Java. Библиотека профессионала. Том 1" Авторы: Кей С. Хорстманн, Гари Корнелл. Есть в книге такой пример (стр. 355):
import java.awt.*;
 
import javax.swing.*;
 
public class ImageDemo 
{
    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true); 
                frame.setTitle("Image Demo");
            }
        });
    }
 
}

class ImageFrame extends JFrame
{
    public ImageFrame()
    {
        add(new ImageComponent());
        pack();
    }
}

class ImageComponent extends JComponent
{
    private static final int DEFAULT_WIDTH = 300;
    private static final int DEFAULT_HEIGHT = 200;
    
    private Image image;
    
    public ImageComponent()
    {
        image = new ImageIcon("12xp.gif").getImage();
    }
    
    public void paintComponent(Graphics g)
    {
        if (image == null) return;
        
        int imageWidth = image.getWidth(this);
        int imageHeight = image.getHeight(this);
        
        g.drawImage(image, 0, 0, null);
        
        for (int i = 0; i * imageWidth <= getWidth(); i++)
            for(int j = 0; j * imageHeight <= getHeight(); j++)
                if(i+j > 0)
                    g.copyArea(0, 0, imageWidth, imageHeight, i * imageWidth, j * imageHeight);

    }
    
    public Dimension getPreferredSize()
    {
        return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); 
    }
    
}
Программа должна могократно выводить изображение в окне, чего не происходит. Это уже второй пример который у меня выполняется некорректно. Предыдущий был с иконкой в строке заголовка - иконка остовалась стандартной. Почему код из книги не работает и какие причины могут быть? Заренее спасибо.

Решение задачи: «Swing: не отображается изображение во фрейме»

textual
Листинг программы
setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("12_xp.png")));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5