2013-05-02 4 views
0

У меня возникли проблемы с этим простым примером кода из книги. Он должен представлять один и тот же образ 2 раза в одном окне (метки северного и южного), один над другим. Когда я запускаю его, он отображает this вместо this (я сожалею, что не разрезал изображения или не изменил их размер). Ниже мой код. Я запускаю Eclipse Juno на Ubuntu 13.04.Почему этот простой код не работает

package gui; 
import java.awt.BorderLayout; 
import javax.swing.*; 

public class Gui { 


    public static void main(String[] args) { 

     JLabel northLabel = new JLabel ("North"); 

     ImageIcon labelIcon = new ImageIcon ("GUItip.gif"); 

     JLabel centerLabel = new JLabel (labelIcon); 
     JLabel southLabel = new JLabel (labelIcon); 

     southLabel.setText("South"); 
     JFrame application = new JFrame(); 

     application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 

     application.add(northLabel, BorderLayout.NORTH); 
     application.add(centerLabel, BorderLayout.CENTER); 
     application.add(southLabel, BorderLayout.SOUTH); 

     application.setSize(300, 300); 
     application.setVisible(true); 


    } 

} 
+2

Вероятно, вы не ищете изображение в нужном месте. Попробуйте использовать абсолютный путь к изображению. Либо это, либо выяснить, где находится ваш каталог пользователя, и поместить туда изображение. –

+3

Или, если изображения вложены в приложение, используйте 'Gui.class.getResource (« GUItip.gif »); вместо этого - еще лучше, используйте' ImageIO', он будет генерировать более значимое исключение ... – MadProgrammer

+0

Это не хорошая практика для жесткого кодирования абсолютных путей. Поместите изображение где-нибудь в проект и укажите путь к корневой папке. –

ответ

2

Вы должны сосредоточиться на следующем утверждении:

ImageIcon labelIcon = new ImageIcon ("GUItip.gif"); 

При запуске нового ImageIcon .. она ищет имеющийся адрес в папке выполнения по умолчанию, т.е. в данном случае " GUItip.gif "необходимо выполнить поиск в каталоге рабочего пространства/пользователя.

Одним из решений является создание доступного изображения GUItip.gif в папке рабочего пространства (выполнения программы). Другим решением было бы обеспечить абсолютный путь .. например.

C:\USER\Workspace\project_name\GUItip.gif 

Хотя лучше всего было бы создать конкретную папку, в которой вы сохраните все изображения, используемые в вашем проекте. Создайте конечную статическую переменную String с абсолютным путем к вашей папке. Теперь любому программисту в этом проекте было бы легко узнать, где искать изображения. Есть хорошие подходы к использованию этого сопоставления .. через XML, который нужно загрузить в начале .. через resourcebundle и т. Д., Но это совсем другая тема.

0

Возможно, изображение не загружается должным образом. Попробуйте использовать блок try/catch, чтобы убедиться, что это так.

Ex:

Image img; 

    File f = new File(//image url); 
    try { 
     img = ImageIO.read(f); 
    } catch (IOException e) { 
     String curr_dir = System.getProperty("user.dir"); 
     throw new IllegalArgumentException("Image could not be found from " + curr_dir); 
    } 
    ImageIcon labelIcon = new ImageIcon(img); 
+0

Спасибо, ребята. Мне просто нужно было использовать полное имя пути, а не просто копировать его, как в книге. Но я поместил изображение в каталог проекта (как мне рассказывал мой учитель). В любом случае, еще раз спасибо. – Deveram

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