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

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

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

Доброго времени суток. Изучаю Java по книге "Java. Библиотека профессионала. Том 1" Авторы: Кей С. Хорстманн, Гари Корнелл. Есть в книге такой пример (стр. 355):
Листинг программы
  1. import java.awt.*;
  2. import javax.swing.*;
  3. public class ImageDemo
  4. {
  5. public static void main(String[] args)
  6. {
  7. EventQueue.invokeLater(new Runnable()
  8. {
  9. public void run()
  10. {
  11. JFrame frame = new JFrame();
  12. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  13. frame.setVisible(true);
  14. frame.setTitle("Image Demo");
  15. }
  16. });
  17. }
  18. }
  19.  
  20. class ImageFrame extends JFrame
  21. {
  22. public ImageFrame()
  23. {
  24. add(new ImageComponent());
  25. pack();
  26. }
  27. }
  28.  
  29. class ImageComponent extends JComponent
  30. {
  31. private static final int DEFAULT_WIDTH = 300;
  32. private static final int DEFAULT_HEIGHT = 200;
  33. private Image image;
  34. public ImageComponent()
  35. {
  36. image = new ImageIcon("12xp.gif").getImage();
  37. }
  38. public void paintComponent(Graphics g)
  39. {
  40. if (image == null) return;
  41. int imageWidth = image.getWidth(this);
  42. int imageHeight = image.getHeight(this);
  43. g.drawImage(image, 0, 0, null);
  44. for (int i = 0; i * imageWidth <= getWidth(); i++)
  45. for(int j = 0; j * imageHeight <= getHeight(); j++)
  46. if(i+j > 0)
  47. g.copyArea(0, 0, imageWidth, imageHeight, i * imageWidth, j * imageHeight);
  48.  
  49. }
  50. public Dimension getPreferredSize()
  51. {
  52. return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
  53. }
  54. }
Программа должна могократно выводить изображение в окне, чего не происходит. Это уже второй пример который у меня выполняется некорректно. Предыдущий был с иконкой в строке заголовка - иконка остовалась стандартной. Почему код из книги не работает и какие причины могут быть? Заренее спасибо.

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут