Пользовательские иконки на JTree - PullRequest
2 голосов
/ 20 января 2012

У меня есть два вопроса к иконкам.

Я использую 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? Спасибо!

Ответы [ 2 ]

5 голосов
/ 20 января 2012

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

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

3 голосов
/ 20 января 2012

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...