#java #netbeans #path #imageicon
#java #netbeans #путь #imageicon
Вопрос:
Я занимаюсь Java, поэтому я создаю сапер. Механика завершена, теперь я хочу сделать ее более удобной для пользователя.
Пытался добавить значок изображения к кнопке в любом случае, но я не могу этого сделать! Я не знаю, как Java работает с этим!
Я делаю это:
(предположим, это расширение JButton)
super(new ImageIcon("/minesweeper/resources/bomb.png"));
У меня есть такие пакеты:
- сапер
- сапер.компоненты
- minesweeper.resources (пытаюсь упорядочить изображения здесь)
- тест (некоторые материалы только для тестирования)
Я делаю это неправильно? (ofc, но как это правильно?)
Ответ №1:
Вы можете получить изображения таким образом:
new ImageIcon(getClass().getResource("/minesweeper/resources/bomb.png"))
Проверьте документ Java на наличие общедоступного URL-адреса getResource (строковое имя)
Комментарии:
1. Я думаю, что это самый простой способ.
2. Ну, это не работает. Кнопка просто пуста. Я думаю, что я все еще делаю это неправильно. Я тоже попробую другой метод.
3. Если ваша проблема заключается в том, как поместить изображение на кнопку, проверьте документ о button.setIcon(imgage); метод.
4. О, вы правы — это самый простой способ — я неправильно понял вопрос 🙂 Тогда вы можете просто установить его напрямую.
Ответ №2:
Чтобы избежать любых проблем, которые могут возникнуть, особенно при использовании разных методов упаковки, создайте новый пакет с именем res
или что-то в этом роде, затем Res.java
вставьте в него a . Поместите ваши изображения в тот же каталог пакетов. Теперь, когда вы хотите что-то прочитать, вы получите InputStream
using Res.getClass().getResourceAsStream("filename");
, а затем создайте новый ImageIcon с помощью stream ( new ImageIcon(is)
) . Это дает вам ImageIcon
то, что вы можете использовать с меткой.
Если вы хотите использовать суперконструктор для настройки образа, вы можете сделать это за один раз:
super(new ImageIcon(Res.getClass().getResourceAsStream("filename")));
В противном случае просто используйте setIcon(..);
.
Редактировать: вы будете использовать свой существующий resources
пакет. Просто поместите Res.java
туда.