Как встроить банку в HTML - PullRequest
       1

Как встроить банку в HTML

5 голосов
/ 23 сентября 2011

На этот счет уже много ресурсов, но я просто не могу заставить его работать.Что я делаю неправильно?Файл jar находится по адресу:

http://www.alexandertechniqueatlantic.ca/multimedia/AT-web-presentation-imp.jar

И код, который я использую для встраивания:

<APPLET ARCHIVE="multimedia/AT-web-presentation-imp.jar" 
        CODE="ImpViewer.class" 
        WIDTH=100% 
        HEIGHT=100%>
</APPLET>

Используемая мной тестовая страница:

http://www.alexandertechniqueatlantic.ca/test.php

Когда я загружаю флягу, она работает нормально, поэтому я уверен, что проблема только в html-встраивании.Пожалуйста, помогите!

Также я получаю следующую ошибку:

java.lang.ClassCastException: ImpViewer не может быть приведен к java.applet.Applet

Ответы [ 3 ]

7 голосов
/ 23 сентября 2011
java.lang.ClassCastException: ImpViewer cannot be cast to java.applet.Applet

«Апплет» - это , а не апплет.

Кстати - хороший интерфейс. Подобно тому, как красный всплеск исчезает на странице «Добро пожаловать, вводный семинар». Очень гладко.

Запустите его по ссылке, используя Java Web Start (и не пытайтесь втиснуть такой красивый интерфейс в веб-страницу).


Если клиент настаивает на том, чтобы GUI был втиснут в веб-сайт, тогда (дайте мне пощечину и) попробуйте этот взлом.

/*
<APPLET 
    ARCHIVE="AT-web-presentation-imp.jar" 
    CODE="ImpViewerApplet" 
    WIDTH=720 
    HEIGHT=564>
</APPLET>
*/
import java.awt.*;
import java.applet.*;
import java.util.*;

public class ImpViewerApplet extends Applet {

    public void init() {
        setLayout(new BorderLayout());
        Window[] all = Window.getWindows();
        ArrayList<Window> allList = new ArrayList<Window>();
        for (Window window : all) {
            allList.add(window);
        }
        String[] args = {};
        ImpViewer iv = new ImpViewer(); 
        iv.main(args);

        all = Window.getWindows();
        for (Window window : all) {
            if (!allList.contains(window) && window.isVisible()) {
                if (window instanceof Frame) {
                    Frame f = (Frame)window;
                    Component[] allComp = f.getComponents();
                    Component c = f.getComponents()[0];
                    f.remove(c);
                    f.setVisible(false);
                    add(c);
                    validate();
                }
            }
        }
    }
}

Упор делается на слово «взломать».

  1. Frame будет мигать на экране, прежде чем исчезнуть.
  2. Он будет работать только с разрешением 720x564 пикселей, в отличие от java.awt.Frame, размер которого можно изменить до любого размера. Но тогда ваша ширина / высота на все 100% была немного оптимистичной. Некоторые браузеры будут соблюдать эти ограничения, другие - нет.
1 голос
/ 23 сентября 2011

Applet - это компонент Java, который обрабатывает правильные вызовы для отображения, встроенные в веб-страницу. У вас есть продукт (файл JAR), содержащий все необходимое для запуска программы; однако у него нет правильного интерфейса (апплета) для запуска этой программы, встроенной в веб-страницу.

Поговорите с автором продукта (если этот автор недоступен, посмотрите документацию) и посмотрите, доступен ли интерфейс апплета. Возможно, это только вопрос использования другого имени класса. Если похоже, что такой интерфейс недоступен, то никто не проделал необходимую работу, чтобы сделать его «встраиваемым» в веб-страницу. Не зная вашего продукта более подробно, нелегко определить, легка ли попытка создания интерфейса апплета в продукте.

Если у вас нет исходного кода, то количество усилий по разработке интерфейса апплета к тому, что у вас есть, даже больше, чем неизвестное количество усилий, которое было бы с исходным кодом.

Существует несколько продуктов, которые позволяют просматривать приложения и управлять ими из веб-браузера, даже если рассматриваемое приложение не предназначено для встраивания в веб-страницу. Эти продукты имеют тенденцию быть дорогими и запатентованными; но если он действительно критически важен (и если он зарабатывает достаточно денег), то затраты и усилия могут быть терпимы. При таком решении веб-браузер фактически открывает окно в сконфигурированном «сервере приложений», который запускает приложение в полноэкранном режиме каждый раз, когда устанавливается соединение. Да, это странная архитектура; однако такая странная архитектура существует целенаправленно, поскольку это действительно единственный способ сделать что-то, когда приложение не может работать в других средах.

Обращайтесь к Citrix за таким решением, если вы можете себе это позволить (помните, что в нем задействованы дополнительные лицензии на Windows), и вы можете допустить его производительность и причуды.

1 голос
/ 23 сентября 2011

Потребовалось немного усилий, но ваш класс ImpViewer имеет следующее определение:

public class ImpViewer extends ImWindow
  implements Printable, Runnable
{
   [...]

ImpViewer НЕ является Applet таким, каким он должен быть, но вместо этого ImWindow. Он должен наследоваться от Applet или, возможно, ImApplet.

В любом случае, идея Эндрюса об использовании Java Web Start является законной. Приложение, которое у вас есть, больше похоже на настольное приложение.

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