2010-12-09 3 views
2

У меня есть пакет com.supercorp.killerapp и в это пакет (com.supercorp.killerapp.views), если я не создаю приложение с guiformbuilder:Где вы помещаете изображение, которое вы загружаете для кнопки в приложении java?

  • Как установить иконку кнопки на JInternalFrame, которая находится в каталоге представлений?
  • Как я могу получить доступ к изображениям в другой папке?
  • Должны ли все мои изображения содержаться в отдельной папке?

Синтаксис я использую:

JButton iconButton = new JButton(new ImageIcon("page_delete.png")); 

Кнопка не отображается изображение.

ответ

4

Я положил в банке, который содержит мое заявление, в пакете с именем com.example.GreatApp.resources, а затем загрузить его с помощью:

getClassLoader().getResourceAsStream(
       "com/example/GreatApp/resource/icon.png");` 

Обновление. Полный пример

/** 
* Creates and returns an ImageIcon from the resource in jar. 
* @param location resource location in the jar, 
* like 'com/example/GreatApp/res/icon.png' or null if it was not found. 
*/ 
public ImageIcon createImageIconFromResource(String location) 
      throws java.io.IOException { 
    java.io.InputStream input = getClassLoader().getResourceAsStream(
       location); 
    // or throw an ioexception here aka `file not found` 
    if(input == null) return null; 
    return new ImageIcon(ImageIO.read(input)); 
} 
3

Вы можете поместить изображения в любом месте пути класса. Я считаю логичным положить их в корень проекта в папку «images».

Пакетов карты к папкам при компиляции & упакованы таким образом, похоже, что вам нужно:

Image im = Toolkit.getDefaultToolkit().getImage("/com/supercorp/killerapp/views/page_delete.png"); 
JButton iconButton = new JButton(new ImageIcon(im)); 
+1

ли эта работа или же вам нужно сделать `нового ImageIcon (GetClass(). GetResource ("/ ком/..."))`? Я не думаю, что конструктор `ImageIcon (String)` загружается из пути к классу. – 2010-12-09 17:04:48

+1

oops, вы правы – javamonkey79 2010-12-09 17:09:46

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