标题:怎么做啊??
取消只看楼主
guxianming
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-7-4
 问题点数:0 回复次数:5 
怎么做啊??
我想实现的功能是在APPLET状态栏里显示2 4 6 8 16 32 64........可是不知道怎么用applet啊

import java.applet.APPLET;
import java.awt.*;
public class gu extends Applet{
public static void main(String args[]){
int s=1;
do{s=s*2;
System.out.println(s);
}while(s<999999999);
}
}
我写了.HTML文件.这样行吗??高手们帮我看看啊..谢谢先.
<HTML>
<HEAD><TITLE>gu</TITLE>
</HEAD>
<applet code="gu.class" width=300 height=100>
</applet>
</HTML>
我不知道怎么做啊,超级菜鸟求助啊
搜索更多相关主题的帖子: public import 状态栏 
2007-06-15 20:21
guxianming
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-7-4
得分:0 
我这样编可以吗.高手们给点指示啊..

java --you are my second girdfriend.
2007-06-15 20:23
guxianming
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-7-4
得分:0 
我运行拉,就是不会显示啊,.

java --you are my second girdfriend.
2007-06-16 12:14
guxianming
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-7-4
得分:0 
大家帮我看看哪里错拉啊呀,菜鸟啊.

java --you are my second girdfriend.
2007-06-16 12:15
guxianming
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-7-4
得分:0 
怎么没人回答下我啊???

[此贴子已经被作者于2007-6-16 21:22:02编辑过]



java --you are my second girdfriend.
2007-06-16 21:21
guxianming
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-7-4
得分:0 
以下是引用xslff在2007-6-16 23:05:01的发言:
Applet是一种特殊的Java程序,请查阅Applet生命周期相关资料,便可知道标准Applet程序最少有4个方法:
init()必须有 像桌面程序(Application)中的main()方法,Applet加载后直接运行此方法
start()可选 当你从其它网页返回到此Applet网页时运行此方法
stop()可选 当Applet所在的网页页面发生跳转时运行此方法
destroy()可选 像桌面程序(Application)中的exit()方法,当网页浏览器关闭或中止Applet时运行此方法
上述四个方法的作用纯属个人理解,如有偏差,还请以SUN的JDK(API文档)为准!

将楼主的程序按Applet要求修改如下:
import java.applet.*;
import java.awt.*;
public class gu extends Applet
{
  int s=1;
  public void init()
  {
    do
    {
      s=s*2;
      repaint();
//Applet属于GUI程序,所以必须用paint方法在组件上面绘出内容,而不是用控制台的println()方法!
//调用repaint()方法等于间接调用paint()方法;
    }
while(s<999999999);
  }
  public void paint(Graphics g)
  {
    g.drawString(String.valueOf(s),60,80);
  }
}
因为Java的速度会很快,所以,这样的代码会直接让我们看到最后那个最大的结果,而看不到s动态变化的过程,对程序做小小的修改!

import java.applet.*;
import java.awt.*;
public class gu extends Applet implements Runnable
{
  int s=1;
  public void init()
  {
    new Thread(this).start();
  }
  public void run()
  {
    do
    {
      try
      {
        Thread.sleep(1000);
      }
      catch (Exception e)
      {
      }
      s=s*2;
      repaint();
    }
    while(s<999999999);
  }
  public void paint(Graphics g)
  {
    g.drawString(String.valueOf(s),60,80);
  }
}
这里,让类实现了Runnable接口,即创建了线程!
创建线程的原因是我们要创建动画,如果我们不创建线程,而是将do while循环放在类的某个方法当中,那么那个方法会一直占用CPU,其它方法无法运行,即无法更新绘制的图像!当循环结束,计算出s最大的值后,paint方法才有机会运行,仅将最后的s结果绘制出来!
我们创建线程后,将循环放入线程中,Applet类的paint方法(其实也是一个线程)会和循环一起工作,每当s的值更新后,paint方法就将更新的s的值绘制在Applet面板上,并覆盖掉原来绘制在Applet面板上面的内容!我们就看到了动态更新的动画(这个算是最最简单的动画了吧)!
如果仅仅是在状态栏显示,程序代码修改如下:
import java.applet.*;
public class gu extends Applet
{
  int s=1;
  public void init()
  {
    do
    {
      try
      {
        Thread.sleep(1000);
      }
      catch (Exception e)
      {
      }
      s=s*2;
      showStatus(String.valueOf(s));
    }
    while(s<999999999);
  }
}

好像在状态栏显示的那个程序不会无限循环啊.


java --you are my second girdfriend.
2007-06-17 20:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-147825-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.086816 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved