2014-02-01 4 views
1

Я собираюсь на него в течение 2 дней, и я не могу найти способ правильно загрузить изображения. Апплет будет запускаться локально на другом компьютере, и он не находится в файле jar (для один предыдущий апплет, для того же проекта, я использовал только файлы .class и использовал THEM непосредственно в источнике HTML код). Мои вопросы: как вы загружаете и используете изображения с относительным путем (возможно, рядом с файлами .class)? Вот часть моего кодаКак загружать и использовать изображения в апплетах?

try { 
    image = null; 
    InputStream is = new BufferedInputStream(new FileInputStream(System.getProperty("user.dir")+"\\toshiba.jpeg")); 
    image = ImageIO.read(is); 
    image = image.getScaledInstance(400,200,Image.SCALE_SMOOTH); 
} 
catch (IOException e) {} 
Icon ic = new ImageIcon(image); 
+0

* «Апплет будет работать локально на другом компьютере, ..» * Не используйте апплет для этого. Предоставьте пользователю исполняемый Jar со всеми ресурсами внутри. Получите доступ к ресурсам как [tag: embedded-resource]. См. [Info page] (http://stackoverflow.com/tags/embedded-resource/info) для тега, чтобы создать «URL». –

+0

1) Ох .. и апплеты и файлы смешиваются, как масло и вода (не). Используйте URL-адрес для загрузки изображения. 2) Изменить код формы 'catch (Исключение e) {..' to' catch (Исключение e) {e.printStackTrace(); // очень информативно! ..' –

ответ

0

@RoxasShadow Попробуйте использовать getDocumentBase().
@ Nick992 попробовал, и он возвращает null, я думаю, что я где-то читал, что вы можете использовать это только с апплетами, которые доступны на удаленных веб-сайтах, а не локально.

Не существует учета того, что люди думают.

Where Am I? Applet

import java.awt.GridLayout; 
import javax.swing.*; 

// <applet code=WhereAmIApplet width=500 height=50></applet> 
public class WhereAmIApplet extends JApplet { 

    @Override 
    public void init() { 
     setLayout(new GridLayout(0,1,5,5)); 
     add(new JLabel("Document Base: " + getDocumentBase())); 
     add(new JLabel("Code Base: " + getCodeBase())); 
    } 
} 
1

Попробуйте использовать getDocumentBase(). Он возвращает путь к папке, в которой хранится апплет.

+0

попробовал, и он возвращает null, я думаю, что я где-то читал, что вы можете использовать это только с апплетами, которые доступны на удаленных веб-сайтах, а не локально ... , но спасибо в любом случае :) – Nick992

+0

Хороший вызов на основе документа , но «возможно, рядом с файлами .class» предлагает больше базы кода. –

+0

codeBase() сделал! tnx :) – Nick992

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