Я работал в небольшом проекте, чтобы получить немного практического программирования. В основном это сделано, но я не буду удовлетворен, пока я не смогу правильно использовать изображения, немного посильной оценки.
Итак, в настоящее время я использую метод getImage из класса ImageIcon, например:
Image body = new ImageIcon("C:/Users/Centollo/Documents/NetBeansProjects/Chess/build/classes/chess/img/WhiteBishop.png").getImage();
Я пытался выяснить, как сделать то же самое, не используя абсолютный путь, но я не знаю, как сделать изображения частью фляги, чтобы он отлично работал на любой другой машине.
Все, что мне нужно знать, - это где разместить изображения и как будет выглядеть код для доступа к ним. Попытайтесь объяснить это, как будто я глуп, пожалуйста. Я читал ответы на подобные вопросы, но я не могу сделать из них головы или хвосты.
Я работаю в NetBeans с пакетом "шахматы" со всеми пакетами.java и chess.img со всеми.png.
Очень быстрый поиск в Google дает следующее:
URL resource = getClass().getClassLoader().getResource( "img/WhiteBishop.png" );
Image body = new ImageIcon( resource );
Если ваш класс простирается от JFrame, вы можете сделать это:
Image image = new ImageIcon(this.getClass().getResource("/images/MyImage.jpg")).getImage();
Если ваш класс расширяет апплет, вы можете пойти следующим образом:
private URL base = null;
private Image myImage = null;
try
{
base = getDocumentBase();
} catch (Exception e)
{
e.printStackTrace();
}
myImage = getImage(base, "images/MyImage.jpg");
Есть несколько способов сделать это, но здесь, как я бы предложил:
Убедитесь, что папка chess.img
находится в вашем пути к chess.img
приложений. Затем попробуйте обратиться к пути как chess.img/image
(да, вы можете использовать косую черту в окнах).
Если это не работает, используйте:
ChessClass.class.getClassLoader().loadResourceAsStream("/chess.img/image");
Обратите внимание на косую черту в начале ссылки на файл. Это указывает на корень пути к классам. Это немного запутанно, поскольку кто-то с опытом unix/linux может подумать, что это относится к корню файловой системы. Это имеет тенденцию работать лучше, чем другой ответ по причинам, которые я знал 10 лет назад. Это уродливый бит Java, который никогда не был полностью очищен.