大家好,我是寻觅: 代码下载
大家元宵快乐啊!!我这次拿这个代码改了一下,希望大家喜欢!
使用方法前一篇文章讲过就不多说了。这里主要介绍:java的元宵快乐闪光字。还有,
初步解释了applet 执行过程 与 this 抽象数据类型
代码:
1
import
java.awt.
*
;
2
import
java.util.
*
;
//
timer
3
4
public
class
yuanxiao
extends
java.applet.Applet
{
5
private
Timer timer;
//
闪光进度计时器
6
private
String labelString;
//
闪光标签
7
private
int
delay;
//
闪光进度
8
9
public
void
init()
{
//
这里是初始化,顾名思义,是对前面定义的参数进行
10
//
赋值,也称初始化
11
12
String blinkFrequency
=
getParameter(
"
speed
"
);
//
获取参数speed(这是applet变量获取参数的方法啊)
13
delay
=
(blinkFrequency
==
null
)
?
400
: (
1000
/
Integer.parseInt(blinkFrequency));
//
判断,事现闪烁频率
14
labelString
=
getParameter(
"
lbl
"
);
//
获取来自调用这个Applet的HTML文件,的参数lbl,要显示给大家看的内容
15
if
(labelString
==
null
)
16
labelString
=
"
Blink
"
;
//
判断,如果lbl没接收到参数,则赋值
17
Font font
=
new
java.awt.Font(
"
Serif
"
, Font.PLAIN,
24
);
//
设置文字属性
18
setFont(font);
19
20
21
22
}
23
24
public
void
start()
{
//
这里说起来有点无聊,因为似乎这里面的内容可以放到init()里面
25
//
因为我觉得这样好象能提高效率。这个问题我还会继续研究下去的,希望
26
//
能给大家一个说法,如果您有什么想法,请留言,还望不吝赐教!
27
28
timer
=
new
Timer();
//
创建计时器
29
timer.schedule(
new
TimerTask()
//
这里可以看的timer的作用,它可以通过创建一个计时器任务来周期性地运行run()函数
30
{
31
public
void
run()
{
32
repaint();
33
}
34
}
35
, delay, delay);
//
指定timer的执行时间delay,和执行各后续任务之间的时间间隔delay
36
37
}
38
39
public
void
paint(Graphics g)
{
//
这里是核心函数,注意applet没有main函数,原因我觉得applet是
40
//
基于web的html开发的,运行在客户机上,解决网络不流畅的问题
41
//
所以,从网络角度讲applet被设计成一种好象数据流的东西,将
42
//
核心代码夹在start()和stop()之间,函数名可以随便起,不影响
43
//
代码的运行。
44
int
fontSize
=
g.getFont().getSize();
//
这里获取(Graphics g)中的g,字体大小24
45
/**/
/*
46
这里有些东西要讲清楚:
47
大家看(Graphics g)是不是有点类似于常用的main的(String[] args)
48
这些是参数,用于接收外来的东西;在这里,其实就是paint用来接收外界给它信息的接口,
49
这是有人就会问,那函数怎么发送信息啊?通过返回值也就是函数内的return函数。
50
另一个角度看这个问题,Graphics g本身也是变量的定义,有点像:我们在函数体内写
51
Graphics g;道理是一样的,只不过放在paint()里多了个功能,能接收外来的参数而已;
52
如,paint(***);这样写就把***传给了paint().
53
*/
54
55
int
x
=
0
, y
=
fontSize, space;
//
定义三个int变量,其中y为字体大小24
56
int
red
=
(
int
) (
50
*
Math.random());
//
调用math的随机函数ramdom
57
int
green
=
(
int
) (
50
*
Math.random());
//
产生三原色
58
int
blue
=
(
int
) (
256
*
Math.random());
59
Dimension d
=
this
.getSize();
//
获取单个字体的高和宽
60
/**/
/*
61
这里原来是“Dimension d = getSize()”;,本人做了修改是为了阐述网友关于this问题,
62
我们知道在其他的计算机语言中,很少见到this这种抽象数据类型(有人说this是关键字
63
,这样讲未免过于笼统),这是java独有的;从这个例子中我们可以看到,有没有this都一样,
64
所以也就能推出
65
this = (Graphics g)
66
这样讲大家就明白了,this就是用于调用本函数接口的;
67
如,我定义函数
68
void test(int a , Stirng b){
69
//现在我用this来调用接口中的变量;
70
this.a = a;
71
this.b = b;
72
//这样写似乎有点傻瓜,大家会觉得毫无意义
73
//但如果你玩过C你就会知道,这样写起来方便
74
//在C里我们会这样写:
75
//int aa = a;
76
//char[] bb = b;
77
//这样大家就看到了,用this时,我们可以省去,从新定义变量的无奈
78
//简化了我们的程序。
79
//只要你接触过另一个抽象数据类型super,你就会清楚这个特性其实也是
80
//java类封装所应具有的特性。
81
}
82
83
下面是核心算法
84
85
*/
86
g.setColor(Color.black);
//
设置字体颜色为黑色
87
FontMetrics fm
=
g.getFontMetrics();
//
建立字形的信息函数
88
space
=
fm.stringWidth(
"
"
);
//
建立一个已经获取字符串的宽度的变量:space=0;
89
for
(StringTokenizer t
=
new
StringTokenizer(labelString); t.hasMoreTokens();)
90
//
既然是变化当然离不开循环了 ,于是这里用到了for(字符串初始特征;更多特征;无内容)
91
//
从这里我们就知道,这个for每做一次会不断获取字符串信息
92
{
93
String word
=
t.nextToken();
//
将字符串的下一个特征赋给word
94
95
int
w
=
fm.stringWidth(word)
+
space;
//
使用word和space
96
//
下面的内容我想讲起来比较抽象,还是得靠大家自己动动脑子,英文注释保留给大家
97
//
中文详细解释,过一段日子会我补上的,请大家放心,呵呵
98
if
(x
+
w
>
d.width)
{
99
x
=
0
;
100
y
+=
fontSize;
//
move word to next line if it doesn't fit
101
}
102
if
(Math.random()
<
0.5
)
103
g.setColor(
new
java.awt.Color((red
+
y
*
30
)
%
256
,
104
(green
+
x
/
3
)
%
256
, blue));
105
else
106
g.setColor(getBackground());
107
g.drawString(word, x, y);
108
x
+=
w;
//
shift to the right to draw the next word
109
}
//
for结束
110
}
111
112
public
void
stop()
{
113
timer.cancel();
//
关闭记时器
114
}
115
116
/**/
/*
下面的代码实际上没有用到,我在这里将他屏蔽
117
118
public String getAppletInfo() {
119
return "Title: Blinker\n"
120
+ "Author: Arthur van Hoff\n"
121
+ "Displays multicolored blinking text.";
122
}
123
124
public String[][] getParameterInfo() { //这是java二维数组,返回其头指针
125
String pinfo[][] = {
126
{"speed", "string", "The blink frequency"},
127
{"lbl", "string", "The text to blink."},
128
};
129
return pinfo;
130
}
*/
131
}
132
133
HTML文件:
1
<
html
>
2
<
head
>
3
<
title
>
Blinking Text
</
title
>
4
</
head
>
5
<
body
>
6
<
h1
>
元宵快乐闪光字
</
h1
>
7
<
hr
>
8
<
applet
code
="yuanxiao.class"
width
=780
height
=100
>
9
<
param
name
=lbl
value
="这是给大家的元宵小礼物 呵呵!
10
大 家 元 宵 快 乐 啊 !"
>
11
<
param
name
=speed
value
="4"
>
12
alt="Your browser understands the
<
APPLET
>
tag but isn't runni
13
ng the applet, for some reason."
14
Your browser is completely ignoring the
<
APPLET
>
tag!
15
</
applet
>
16
<
hr
>
17
<
a
href
="yuanxiao.java"
temp_href
="yuanxiao.java"
>
The source.
</
a
>
18
</
body
>
19
</
html
>
20
地震让大伙知道:居安思危,才是生存之道。
posted on 2007-03-05 14:30
小寻 阅读(608)
评论(0) 编辑 收藏