Изображения в апплете не отображаются на веб-странице - PullRequest
1 голос
/ 13 апреля 2010

Я пытаюсь отобразить изображение JPEG и движущуюся точку на апплете Java, который я использую в веб-приложении. Однако, когда я запускаю апплет, он работает нормально, но когда я отображаю апплет со страницы JSP, я получаю движущуюся точку, но не изображение JPEG.

Есть ли конкретная папка, в которой должен быть JPEG?

Это 2 метода, которые я использую для рисования изображения и движущейся точки на экране.

public class mapplet extends Applet implements Runnable {

int x_pos = 10;
int y_pos = 100;
int radius = 20;
Image img, img2;
Graphics gr;
URL base;
MediaTracker m;

@Override
public void init() {

        mt = new MediaTracker(this);

        try {
            //getDocumentbase gets the applet path.
           base = getCodeBase();
          img = getImage(base, "picture.jpg");
            m.addImage(img, 1);
            m.waitForAll();
        } catch (InterruptedException ex) {
            Logger.getLogger(movement.class.getName()).log(Level.SEVERE, null, ex);
       }

public void paint (Graphics g) {

 g.drawImage(img, 0, 0, this);
// set color
 g.setColor (Color.red);

// paint a filled colored circle
g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);

}

Код ниже - это звонок со страницы jsp

<applet archive="mapplet.jar" code="myapplets/mapplet.class" width=350 height=200>
</applet>

Файл jar и изображение находятся в той же папке, что и страница jsp, а также есть папка, содержащая содержимое класса и изображение апплета в разделе веб-приложения. Апплет загружается нормально, но картинка не отображается. Я думаю, что это не код, а местоположение картинки, которая вызывает проблему.

Спасибо

Ответы [ 3 ]

0 голосов
/ 27 апреля 2011

Некоторые комментарии, которые могут сделать его более понятным для вас.

//getDocumentbase gets the applet path.

Нет. getDocumentBase() предоставляет путь к веб-странице . Но этого нет ни здесь, ни там, поскольку этот апплет на самом деле вызывает ..

base = getCodeBase();

.. который предоставляет кодовую базу. Кодовая база по умолчанию соответствует каталогу веб-страницы, если в элементе applet не указан параметр codebase. Поскольку элемент applet не объявляет codebase, base будет таким же URL-адресом, что и база документов.


Кстати: в элементе апплета

code="myapplets/mapplet.class"

.. должно быть ..

code="myapplets.mapplet"

И поскольку общая номенклатура для имен классов Java равна EachWordUpperCase, имя класса следует изменить.

Апплет объявляет?

package myapplets;

КСТАТИ (2):

есть также папка, содержащая содержимое класса и изображение апплета в веб-разделе приложения.

Что это значит? Укажите полные пути от корня сервера ко всем используемым ресурсам (например, HTML / JSP, Jar-файл и изображение).

0 голосов
/ 28 декабря 2012

пожалуйста, проверьте ваш путь .. или чтобы решить его, пожалуйста, поместите ваши файлы в папку и упакуйте их в файл JAR.и укажите относительный путь к файлам изображений внутри вашего jar. Подобно: пусть ваш апплет называется myapp.class в пакете demoapp затем поместите ваши файлы в dir "images" внутри demoapp и укажите путь к этому пути во всем вашем Java-коде. не забудьте включить файлы изображений в сборку jar.

0 голосов
/ 14 апреля 2010

Да, изображение должно находиться в той же папке, что и исходный код. Я бы порекомендовал сделать папку с названием images и внутри нее поместить все ваши изображения и просто изменить "picture.jpg" на "\ images \ picture.jpg". Проверьте каталог вашего веб-сайта, чтобы увидеть, находится ли изображение в той же папке, что и исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...