2012-01-19 2 views
2

У меня есть два вопроса для значков.Пользовательские значки на JTree

Я использую ImageIcons в качестве значков по умолчанию на JTree. По предложению учебники я погрузочные иконки с помощью этого метода:

protected ImageIcon createImageIcon(String path) { 

     java.net.URL imgURL = getClass().getResource(path); 
     if (imgURL != null) { 
      return new ImageIcon(imgURL); 
     } else { 
      System.err.println("Couldn't find file: " + path); 
      return null; 
     } 
} 

Хотя для того, чтобы это работало, я должен хранить изображения внутри файла с исходным кодом, который я считаю это грязное (но я прочитал его нужно для запуска на .jar). Есть ли способ загружать изображения аналогичным образом, когда они находятся в папке проекта, а не на src?

Также есть способ автоматически масштабировать изображения в правильном размере для отображения на JTree? Благодаря !

ответ

5

Код не загружает ImageIcon из папки src. Он загружает его из класса пути выполнения. И для того, чтобы изображения находились в пути пути выполнения, самый простой способ - поместить их в папку src, чтобы ваша среда IDE автоматически копировала их в целевую папку вместе с файлами .class.

Если вы хотите, вы можете указать другой исходный каталог (например, resources, например) в вашем проекте, а среда IDE также скопирует файлы этого исходного каталога в целевую папку. Это позволяет отделить файлы Java от файлов ресурсов.

+0

Какой IDE вы используете? Если это Eclipse: щелкните правой кнопкой мыши - Новая исходная папка. –

+0

Я нашел, как определить другую исходную директорию, но как я ссылаюсь на нее из классов другого src? – Giannis

+0

Так же, как и раньше. Eclipse компилирует два каталога источников в один и тот же целевой каталог. Все находится в пути к классам во время выполнения. Java не заботится о том, как организованы ваши источники. Он просто загружает классы и ресурсы из пути к классам. Прочитайте http://en.wikipedia.org/wiki/Classpath_%28Java%29 –

3

Есть ли способ загружать изображения аналогичным образом, когда они находятся в папке проекта, а не на src?

Да, вы можете использовать String конструктор ImageIcon, который позволяет указать путь к файлу:

ImageIcon imageIcon = new ImageIcon("images/image.png") 

Вы можете использовать путь относительно рабочего каталога или абсолютный путь.

Также существует способ автоматического масштабирования изображений на правильный размер для отображения на JTree?

Посмотрите на ответ this question, я думаю, что это позволит вам делать то, что вы хотите.

+0

Спасибо! Просто нужно было найти размер значка по умолчанию, который составляет 16 * 16 – Giannis

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