2011-05-18 129 views
1

我是java的新手,试图让它在过去的48小时内工作,我即将放弃。Java applet在eclipse中不起作用

我想把java applet放到网站上。仅在日食中工作良好。我尝试了很多在这个网站上已经提出的解决方案,他们都没有为我工作,只是把代码弄糟了,所以我把它恢复到原来的状态。任何人都可以指出问题吗?谢谢!

(代码编辑,以反映建议答案)

package nameapp; 

    import java.util.*; 
    import java.io.*; 
    import java.applet.Applet 

    public class NameApp extends Applet{ 

public static void main(String[] args) throws IOException { 
    String name; 
    BufferedReader reader; 
    reader = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("What is your name? "); 
    name = reader.readLine(); 
    if (name.equals("Mike")) { 
     System.out.print("Hello it's "); 
     System.out.println(new Date()); 
     System.out.print("My name is "); 
     System.out.print(name); 
     System.out.println(" and I am totally awesome!!!");  
    } 
    else if (name.equals("Lisa")) { 
     System.out.print("Hello it's "); 
     System.out.println(new Date()); 
     System.out.print("My name is "); 
     System.out.print(name); 
     System.out.println(" and I'm the prettiest gal in the world!"); 
    } 
    else { 
     System.out.print("Hello it's "); 
     System.out.println(new Date()); 
     System.out.print("My name is "); 
     System.out.print(name); 
     System.out.println(" and I'm just ok i guess..."); 
    } 
} 

}

和HTML是...

<applet code=nameapp/NameApp.class width=300 height=300> 
<param name="bgcolor" value="ffffff"> 
<param name="fontcolor" value="000000"> 
Your browser is not Java enabled. 

+0

我建议在浏览器上启用java。你正在使用哪种浏览器? – Swati 2011-05-18 16:29:08

+0

你有没有可以访问的jar? – 2011-05-18 16:37:07

+0

.jar和.class以及.java和.html都在同一个文件夹 – mike 2011-05-18 16:38:49

回答

0
code="nameapp/NameApp.class" 

把它也会需要延长java.applet.Applet并且通常是一个小程序。

+0

所以我做了这两件事.. 增加进口java.applet.Applet中 和重做的第一行: 公共类NameApp扩展的Applet { 我得到了日食 警告的序列化类NameApp没有声明 \t类型的静态最后的serialVersionUID领域long \t - 断点:NameApp 并在html文件中出现错误,并在详细信息中获得 nameapp/NameApp.class未找到。 还有什么想法? – mike 2011-05-18 16:34:57

+0

序列化警告可以忽略(或者按照它的说法,或者在'public class'之前添加'@SuppressWarnings(“serial”)'(我认为))。类文件将需要位于正确的目录中。如果你的html文件在http://example.xx/me/myapplet.html中,你的类文件应该在http://example.xx/me/nameapp/NameApp.class中。对于覆盖init的applet('@Override public void init(){')与应用程序的'public static void main(String [] args){''很相似。 – 2011-05-18 16:54:56

+0

谢谢汤姆。我正在尽我所能去理解你的代码建议(记住我是这个品牌的新成员)。将类文件放在名为nameapp的文件夹中做了一些事情。它使小程序完全消失(没有错误图标的框)。你认为在目录上还有更多工作要做吗? @override是否必要?如果这样你能解释更多吗? – mike 2011-05-18 17:02:56

1

请仔细阅读本教程是包含基本的东西有关JApplet

请使用JApplet的不Applet的

carrefully阅读signed java applet restrictions

What Applets Can and Cannot Do

https://stackoverflow.com/tags/java-web-start/info

注意到的Java 1.6。 025来到另一个r JApplet的限制,以及这些问题和可能的解决方法在本论坛上由Andrew Thompson详细描述,但是我失去了链接...

+0

感谢这些链接,我现在就去调查一下,我需要使用Swing吗?我仍然在复制和粘贴大约75%的代码,所以跳入更多的库现在有点可怕。我需要签名吗?(我尝试了几个小时在eclipse中做这个没有成功)最后,我的理解是,只有当他们访问你的计算机时,applets才需要签名。 – mike 2011-05-18 17:08:22

+0

是的,你会使用Swings JComponents但初始化JApplent你想念公共无效初始化(){... – mKorbel 2011-05-18 17:31:15

1

看起来您正在编写应用程序而不是applet。当你在eclipse中运行它时,你是否选择Run As ...然后选择Java Application?尝试将它作为Java Applet运行。你应该看到appletviewer弹出,没有内容。 ()方法,而不是main(),并且与图形相关的方法paint()也通常被重载;我还没有看到一个可以访问标准的applet。

您可能会发现这里的stackoverflow问题有用:Main vs init

+0

啊哈!这是正确的。我理解你说的一半,但我现在看看那个链接。谢谢 – mike 2011-05-18 17:10:58

0

阅读Applet tutorial - 而不是public static void main(String[] args)方法,Applet需要public void init()。此外,使用现在的代码,您只会看到一个空白的Applet - 您必须让Java调试控制台看到System.out.println()打印的任何内容,并且Applets无法访问System.in以读取输入 - 相反,您需要将一些TextField组件添加到Applet中,并使用这些组件来读写文本。

+0

好吧我现在看到有一个区别在applet和java应用程序之间我不太清楚wh在即时做,但我会看看现在是否我可以学习这一点thabks – mike 2011-05-18 17:12:39