标题:怎么做啊??
只看楼主
guxianming
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-7-4
 问题点数:0 回复次数:9 
怎么做啊??
我想实现的功能是在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
xiang092106
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-5-16
得分:0 
自己运行吧,不行再说吧。
2007-06-16 01:30
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
xslff
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-4-16
得分:0 
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);
  }
}

[此贴子已经被作者于2007-6-16 23:44:47编辑过]

2007-06-16 23:05
天涯海角
Rank: 2
等 级:新手上路
威 望:3
帖 子:507
专家分:0
注 册:2005-10-21
得分:0 

import java.awt.*;

public class Test extends java.applet.Applet {
int s=1;
String str="";
String str1="";
/** Initialization method that will be called after the applet is loaded
* into the browser.
*/
public void init() {
this.setBackground(Color.green);
}

public void paint(Graphics g) {
Graphics2D s2d=(Graphics2D)g;
s2d.setFont(new Font("宋体",Font.ITALIC,36));
while(s<999999)
{
s2d.setColor(Color.black);
s2d.drawString(str1,50,50);
s=s*2;
str=s+"";

s2d.setColor(Color.red);

s2d.drawString(str,50,50);
try{
Thread.sleep(1000);
}catch(Exception ex)
{

}

}

repaint();

}

}

<HTML>
<HEAD><TITLE>gu</TITLE>
</HEAD>
<applet code="Test .class" width=300 height=100>
</applet>
</HTML>


我的未来不是梦!
2007-06-16 23:07
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
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
不应该把这个放在init里面执行,init是初始化用的,应该快速返回

你想要看到循环的效果,应该另起一个线程来做这个事情

可惜不是你,陪我到最后
2007-06-18 09:12



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




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

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