Путь к изображению Java в netbeans

Я путешествую по Java, поэтому я строю тральщик. Механика завершена, теперь я хочу сделать ее удобной для пользователя.

Пытался добавить ImageIcon к кнопке везде, но я не могу этого сделать! Я не знаю, как Java работает с этим!

Я делаю это:

(предположим, что это расширение JButton)

super(new ImageIcon("/minesweeper/resources/bomb.png"));

У меня есть такие пакеты:

  • тральщик
  • сапер.компоненты
  • minesweeper.resources (здесь пытаются упорядочить изображения)
  • тест (некоторые вещи только для тестирования)

Я делаю это неправильно? (офк, но как правильно?)


person johnsmith    schedule 05.10.2011    source источник


Ответы (2)


Вы можете получить изображения таким образом:

new ImageIcon(getClass().getResource("/minesweeper/resources/bomb.png"))

Проверьте документацию по Java для общедоступный URL-адрес getResource(имя строки)

person DarkByte    schedule 05.10.2011
comment
Я думаю, что это самый простой способ. - person DarkByte; 05.10.2011
comment
Ну не работает. Кнопка просто пустая. Я думаю, что я все еще делаю это неправильно. Я попробую и другой метод. - person johnsmith; 05.10.2011
comment
Если ваша проблема заключается в том, как поместить изображение на кнопку, обратитесь к документу о button.setIcon(imgage); метод. - person DarkByte; 05.10.2011
comment
О, вы правы - это самый простой способ - я неправильно понял вопрос :) Тогда вы можете просто задать его напрямую. - person Chris Dennett; 05.10.2011

Чтобы избежать любых проблем, которые могут возникнуть, особенно когда используются разные методы упаковки, создайте новый пакет с именем res или как-то так, а затем погрузите в него Res.java. Поместите свои изображения в тот же каталог пакета. Теперь, когда вы захотите что-то прочитать, вы получите InputStream с помощью Res.getClass().getResourceAsStream("filename");, а затем создадите новый ImageIcon с потоком (new ImageIcon(is)). Это дает вам ImageIcon, который вы можете использовать с меткой.

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

super(new ImageIcon(Res.getClass().getResourceAsStream("filename")));

В противном случае просто используйте setIcon(..);.

Изменить: вы будете использовать существующий пакет resources. Просто поставьте туда Res.java.

person Chris Dennett    schedule 05.10.2011