我想在Applet里调用服务器的窗体程序出来运行,窗体程序不是嵌在页面里的,而是象客户端在本地打开一样,请问可不可以啊?要怎么实现啊???

解决方案 »

  1.   

    可以啊,你在Applet中构造一个JFrame,显示它就可以了
      

  2.   

    我直接new我的窗体类但是那些按纽事件都不执行啊,一点按钮就出异常了
      

  3.   

    public class MyApplet extends Applet {
      public void init() {
        new Login();
      }
    }
    这个是我的Applet类,Login是我的一个登陆窗体,有个登陆按钮实现登陆功能,登陆过程是通过SOCKET和另一个服务器通信的,现在就是通过Applet弹出这个登陆框后按钮不起作用了
      

  4.   

    问题应该是出在我的SOCKET通讯那了,都是报java.security.AccessControlException:
    access denied (java.net.SocketPermission 59.56.78.222:25535 connect,resolve)这样的异常,我用窗体程序直接运行的话都没这个问题
      

  5.   

    在Applet中使用Socket通讯需要添加数字签名。
      

  6.   

    数字签名的例子网上很多,我这里有一个,你参考下:  用Applet写的java小程序如果没有经过签名,那么访问客户端程序下载后会受到安全限制;怎样对java小程序签名受到很多人的关注,网上也有这些方面可供参考的文档,但都不是完整,在这里我给出一份可具体操作的文档,希望能给大家一些帮助。  场景:test.jar:内含待签名的java小程序  结果:签名后,客户端能自动下载java小程序,且java小程序能访问客户端的任何资源  步骤:  (1)将java小程序打包  jar cvf test.jar test.class  (2)生成名为chinani.store的密钥库,别名为chinani  keytool -genkey -keystore chinani.store -alias chinani  密码:123456 (根据需要自己输入)  以下根据需要输入,最后确认:y  (3)导出chinani.cer数字证书  keytool -export -keystore chinani.store -alias chinani -file chinani.cer  密码:123456 (根据需要自己输入)  (4)对test.jar文件进行签名  jarsigner -keystore chinani.store  test.jar chinani  密码:123456 (根据需要自己输入)  最后把jar包放入一个html文件就可以了
      

  7.   

    要是有多个JAR包是不是用同一个签名就可以了
      

  8.   

    现在我的登陆可以成功了,但是登陆后出来的窗体里有调用另外的也是自己写的JAR包,是通过
    Process pro = Runtime.getRuntime().exec()这种方式调用的,这个被调用的JAR包也是Socket通讯的,现在一调用就出现java.io.IOException: Stream closed这个异常,下面是我的调用代码:    
    rt = Runtime.getRuntime();
        try {
          pro = rt.exec("java -jar " + System.getProperty("user.dir") +
                        "/blackjack.jar " + userID + " " + url + " " + port);      while (!stopFlag) {
            BufferedReader input = new BufferedReader
                                   (new InputStreamReader(pro.
                getInputStream()));
            String line;
            while ((line = input.readLine()) != null) {
              count++;
              if (count == 7) {
                MainFrm.loadingFrm.stopFrm();
              }
              System.out.println(line);
            }
            input.close();
            count = 0;
            try {
              sleep(100);
            } catch (InterruptedException ex1) {
              count = 0;
              ex1.printStackTrace();
            }
          }
        } catch (IOException ex) {
          ex.printStackTrace();
        }
      

  9.   

    当作正常的应用程序调用的时候都是正常的,通过Applet就这样了