这方面有很多资源,但我似乎无法让它发挥作用。我究竟做错了什么? 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
当我下载jar时它运行正常,所以我确定问题只是html嵌入。请帮忙!
另外,我收到以下错误:
java.lang.ClassCastException:ImpViewer无法强制转换为 java.applet.Applet中
答案 0 :(得分:7)
java.lang.ClassCastException: ImpViewer cannot be cast to java.applet.Applet
'applet'是不小程序。
BTW - 很棒的用户界面。就像红色飞溅进入“欢迎入门工作坊”页面一样。很顺利。
使用Java Web Start从链接启动它(请不要尝试将这样漂亮的用户界面填入网页)。
如果客户坚持要将网页塞进网站然后(为我拍打它们)尝试这个黑客。
/*
<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();
}
}
}
}
}
强调的是“黑客”这个词。
Frame
会在消失前闪现在屏幕上。java.awt.Frame
不同。但是,无论如何,你的'100%'宽度/高度有点乐观。有些浏览器会尊重这些限制,有些则不会。答案 1 :(得分:1)
需要花费一些精力,但您的ImpViewer类具有以下定义:
public class ImpViewer extends ImWindow
implements Printable, Runnable
{
[...]
ImpViewer不是Applet
所需要的,而是ImWindow
。它应该继承Applet
或ImApplet
。
无论如何,安德鲁斯使用Java Web Start的想法是合法的。您拥有的应用程序看起来更像桌面应用程序。
答案 2 :(得分:1)
Applet
是一个Java组件,它处理显示嵌入在网页中的正确调用。您拥有的产品(JAR文件)包含运行程序所需的一切;但是,它没有正确的界面(小程序)来运行嵌入在网页中的程序。
与产品的作者交谈(如果该作者不可用,请查找文档)并查看applet界面是否可用。也许这只是使用不同类名的问题。如果看起来这样的界面不可用,那么没有人做过必要的工作来使其“嵌入”在网页中。如果不更详细地了解您的产品,就很难确定在产品中创建Applet界面的努力是否容易。
如果您没有源代码,那么开发Applet接口所需的工作量甚至大于源代码所需的未知工作量。
有一些产品允许从Web浏览器查看和控制应用程序,即使有问题的应用程序未设计为嵌入网页中。这些产品往往价格昂贵且专有;但是,如果它真的是关键任务(并且如果它赚足够的钱)那么费用和努力可能是可以承受的。有了这样的解决方案,Web浏览器实际上打开一个窗口,进入配置的“应用程序服务器”,每次建立连接时都以全屏模式启动应用程序。是的,这是一个奇怪的架构;然而,这种奇怪的架构是有目的地存在的,因为当应用程序无法在其他环境中运行时,这是真正唯一可行的方法。
如果您能负担得起,请向思杰寻求这样的解决方案(请记住有额外的Windows许可证)并且您可以容忍它的性能和怪癖。