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")));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д