有关输入输出的Applet的问题(超级疑惑)

程序獵人 2003-02-08 02:53:59
为了达到资源共享,用一个Applet类来调用普通得Java类。在Applet中用一个TextArea接受原java类的输出,但是为什么不成功?令人疑惑的是,在java类中的static函数中写的输出可以显示,其他函数中则不行。另外在JBuilder中运行正常。浏览器和appletviewer却非常不给面子。
以下是具体做法

将原java类中的System.out全部更改为Out,Out 定义如下:
protected static PrintStream Out = System.out;
在Applet类中调用普通java类中的appletCall()函数,函数全文如下:
public static void appletCall(String[] args, PrintStream out)
{
Out = out;
//Out.println("call"):
main(args);
}
out是从Applet中传入的参数。Applet中的调用如下:
PhPCSeeker.appletCall(arg, ResultOut);
其中PhPCSeeker是普通java类的类名,ResultOut定义如下:
protected ByteArrayOutputStream display = new ByteArrayOutputStream();
protected PrintStream ResultOut = new PrintStream(display);

然后在Applet中定义一个TextArea命名为taResult
并让Applet类,实现Runnable接口,其run()函数如下:
public void run()
{
while(taResult.getText().indexOf("====My PC is ") == -1 || taResult.getRows() >= 256 + 2)
{
try
{
taResult.append(display.toString());
display.reset();
Thread.sleep(100);
}
catch (InterruptedException e)
{
}
}
try
{
display.close();
}
catch (IOException e)
{
}
}
作用就是简单的将那个普通java类的输出显示在TextArea中。
原java类也是一个继承了Thread的类,其run()函数中有Out.println(string);语句。
按理应该是原java类不断地输出,Applet不断的显示。但事实却无法看到显示,但是如果将上面提到的appletCall()函数中的注释打开执行,则可以显示"call"字样。
另一个让人大惑不解的是,我用JBuilder7进行开发,在JBuilder中进行运行一切正常,所有信息均可看到,但是使用浏览器或者appletviewer却无法得到满意的效果。
为什么呢?

还请各位大虾帮忙解释。若有更好地实现方案,也请不吝赐教。谢谢!
...全文
29 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序獵人 2003-02-08
  • 打赏
  • 举报
回复
哦?如何签名?如何突破?

能否详细解释一下?

初学中……
pentax 2003-02-08
  • 打赏
  • 举报
回复
你的一些方法有安全限制,要求突破沙箱,如果不签名是不能实现的。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧