2016-08-29 2 views
-1

Цель этой небольшой программы для загрузки .jpg изображений и отображать его в классе Canvas продлен JPanel, который отображается в объекте JFrame в главном классе, например, так:Почему программа не вводит метод loadImage()?

Главного класс

<code> 

    package imageloader; 
    import java.awt.Graphics; 
    import javax.swing.JFrame; 
    public class ImageLoader { 
     public static void main(String[] args) 
     { 
      JFrame frame = new JFrame(); 
      Canvas c = new Canvas(); 
      Graphics g = frame.getGraphics(); 
      Loader load = new Loader(); 
      frame.setSize(500, 500); 
      c.setImage(load.loadImage()); 
      frame.add(c); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setVisible(true); 
     } 
    } 




</code> 
<h1>The Canvas class</h1> 


<code> 
    package imageloader; 
     import java.awt.Graphics; 
     import java.awt.image.BufferedImage; 
     import javax.swing.JPanel; 
     public class Canvas extends JPanel 
     { 
      private BufferedImage img = null; 
      public Canvas() 
      { 
       this.setSize(500, 500); 
       this.setVisible(true); 
      } 
      @Override 
      public void paint(Graphics g) 
      { 
       g.drawLine(0, 0, 250, 250); // just to see if the Canvas is painting, and it does! 
       g.drawImage(img, 250, 250, null); 
       repaint(); 
      } 
      public void setImage(BufferedImage img) 
      { 
       this.img = img; 
      } 
     } 

</code> 
<h1>The Loading class</h1> 

<code> 

    package imageloader; 
    import java.awt.image.BufferedImage; 
    import java.io.File; 
    import java.io.IOException; 
    import javax.imageio.ImageIO; 
    public class Loader 
    { 
     public BufferedImage loadImage() 
     { 
      BufferedImage im = null; 
      try 
      { 
       File f = new File("player.jpg"); 
       im = ImageIO.read(f.getAbsoluteFile()); 
       System.out.println("Loaded!"); // this did not apear in my Output-Console in Netbeans 
      } 
      catch (IOException e) {} 
      return im; 
     } 
    } 

</code> 

Мой главный вопрос уже задан в названии. Сначала я сравнил код с учебником по документации Java и изменил класс родителя с Canvas.java на компонент с небольшим эффектом. Посмотрите здесь для справки:

Link to source

Тогда я нашел это с помощью Google:

Displaying an image in Swing (on StackOverflow)

С моей JFrame (или компонента по этому вопросу) и в самом деле выполнить DrawLine() функцию от (0 | 0) до (250 | 250), но это не было проблемой, но я попробовал paintcomponent() и paintComponents(), первый рисовал линию, но не изображение, и казался значительно медленнее, последний не рисовал Линия вообще, поэтому я снова переключился на метод paint().

До моего небольшого исследования я пробовал разные вещи самостоятельно. Я немного изменил класс Loader из Tutorial-Version.

Полный учебник доступен здесь: Link

+3

Ну, вы молча выбросили IOException, это никогда не умный ход ... – John3136

+0

Вы уверены, что ваш путь к player.jpg прав? –

+0

Спасибо, Джон ... Я знаю, что смогу распечатать этот стек ... Рагху К Наир, да, я уверен, что картинка находится в той же папке, что и мой источник, поэтому у меня нет длинного пути и обойти это возможное опасность! Я ценю ваш вход ... плюс я изменил код, так что путь к файлу обнаружен классом File. –

ответ

0

Я согласен с John3136, но ответить прямо: «Loaded»

Если вы не видите, то это признак того, что одна из другой две строки в try бросают исключение. Дальнейшее устранение неполадок невозможно без информации об исключении.

Поместите e.printStackTrace() в свой блок catch и опубликуйте результат здесь, если у вас все еще есть трудности.

Хотя файл может находиться в том же каталоге, что и ваш источник, он должен находиться в том же каталоге, что и ваш исполняемый файл для вашего кода, чтобы его найти. Проверьте значение f.getAbsolutePath(), чтобы убедиться, что это то, чего вы ожидаете.

+0

Это сработало! Благодаря! –

+0

Не могли бы вы отметить это как ответ? Это упрощает ведение бухгалтерского учета. –

Смежные вопросы