📄 在网页上发布统计曲线.htm
字号:
Plot类构造主要基于以下几点考虑。 <BR> (1)派生于Applet
<BR> 一个Java小程序有且只有一个类派生于Applet,这就好像在MFC中
<BR>,必须有且只有一个类派生于CWinApp一样。另外,与MFC程序不一样的 <BR>是,不管包含派生于Applet类的源程序文件(
.java)命名为什么,生成 <BR>的供网页使用的字节码文件(.class)只与该派生类同名,而与源文件
<BR>名无关,这一点容易引起混淆。打个比方,如果包含Plot类的文件为Pl
<BR>otTest.java,而编译生成的字节码文件名为Plot.class,而不是PlotT
<BR>est.class。最后,Plot必须声明为public,这是由于一个编辑单元必 <BR>须有且只有一个类声明为public。
<BR> public class Plot extends Applet
<BR> { <BR> ......
<BR> } <BR> (2)用户界面
<BR> 目前,Java在java.awt中提供小程序的用户界面所需要的接口和
<BR>类(共42个类和2个接口),其中实现了我们在Windows中见到的各种用
<BR>户界面,比如,菜单、对话框,以及各种控件,如按钮、列表框、复选框
<BR>、单选框、编辑框、组合框等。鉴于本程序要求从3组数据中选择一
<BR>组进行绘制,需要选用单选框控件。单选框在java.awt中用Checkbox
<BR>和CheckboxGroup两个类联合实现:当Checkbox单独使用时,它是复选
<BR>框;而把它添加到CheckboxGroup中则变成了单选框。 <BR> public
void init() <BR> {
<BR> ......
<BR> cbg = new CheckboxGroup();
<BR> <A
href="file://单/">file://单/</A>选按钮。
<BR> cb1 = new Checkbox("数据1", cbg,
false); <BR> cb2 = new Checkbox("数据2",
cbg, false); <BR> cb3 = new
Checkbox("数据3", cbg, false); <BR> }
<BR> (3)布局管理器 <BR>
在Java中,为了使得小程序在各种操作系统中的用户界面具有一 <BR>致的外观,采用布局管理器(Layout
Manager)对用户界面的相对位置 <BR>进行管理。Java在java.awt包中包含了流布局管理器(FlowLayout)、
<BR>边界布局管理器(BorderLayout)、卡片布局管理器(CardLayout)、网
<BR>格布局管理器(GridLayout)和网格包布局管理器(GridBagLayout)5个 <BR>布局管理器。如果希望3
个单选框按钮放在绘制图形的下面按一行排 <BR>列,该如何编写代码呢?可以这样来实现:首先设置Plot小程序为边界
<BR>布局,然后为3个单选框按钮创建一个Panel对象cbPanel,用于组织3个
<BR>控件,并设置cbPanel为网格布局,最后将cbPanel添加到Plot类中,并 <BR>设置其方向为南(South)。
<BR> public void init() <BR> {
<BR> ......
<BR> <A
href="file://设/">file://设/</A>置Plot为边界布局。 <BR>
setLayout(new BorderLayout()); <BR> <A
href="file://为/">file://为/</A>3个控件申请面板对象cbPanel。
<BR> cbPanel = new Panel(); <BR>
<A href="file://设/">file://设/</A>置网格布局管理器,并按1×3方式排列。
<BR> cbPanel.setLayout(new GridLayout(1, 3));
<BR> <A href="file://为/">file://为/</A>各按钮申请1个面板。
<BR> cb1Panel = new Panel();
<BR> cb1Panel.add(cb1); <BR>
cb2Panel = new Panel(); <BR> cb2Panel.add(cb2);
<BR> cb3Panel = new Panel();
<BR> cb3Panel.add(cb3); <BR> <A
href="file://添/">file://添/</A>加到统一的1个面板cbPanel中。
<BR> cbPanel.add(cb1Panel); <BR>
cbPanel.add(cb2Panel); <BR> cbPanel.add(cb3Panel);
<BR> <A
href="file://添/">file://添/</A>加cbPanel到Plot中,方向为:图形在北,按钮在南。
<BR> add("South", cbPanel); <BR>
} <BR> (4)读取HTML参数 <BR>
因为本程序要用到统计数据和统计标题作为小程序的参数存放在 <BR>HTML文档中,所以在开始绘制图形之前,需要从HTML读取这些参数,然
<BR>后才开始显示标题和绘制统计曲线。其中,读取统计标题和统计数据 <BR>分别实现。 <BR>
①统计标题,其格式可以是: <BR> <param value="1-DESC"
value="每月访问者统计"> <BR>
1-DESC表示第一组数据的统计标题,"每月访问者统计"是标题内 <BR>容。
<BR> public String
readStringData(String s) <BR> {
<BR> String tempString = null;
<BR> Integer param;
<BR> boolean datapresent = true;
<BR> int i = 0;
<BR> try
<BR> {
<BR> tempString =
getParameter(s + "-DESC"); <BR> }
catch (Exception e) <BR> {
<BR>
System.out.println(e); <BR> }
<BR> return tempString;
<BR> } <BR> ②统计数据,格式可以是:
<BR> <param value="1-2" value="14">
<BR> 1-2表示第一组数据的第二个数据点,14表示该数据点的值。
<BR> public Vector
readData(String s) <BR> { <BR>
Vector tempVector = new Vector(); <BR>
Float param; <BR> String tempData =
null; <BR> boolean datapresent = true;
<BR> int i = 0;
<BR> while(datapresent)
<BR> {
<BR> try {
<BR> tempData =
getParameter(s + "-" + (i+1)); <BR> }
<BR> catch(Exception e)
<BR> {
<BR>
System.out.println(e); <BR> }
<BR> if(tempData == null)
<BR> {
<BR> datapresent =
false; <BR> } else {
<BR> param =
Float.valueOf(tempData);
<BR>
tempVector.addElement(param);
<BR> i += 1;
<BR> }
<BR> }
<BR> return tempVector;
<BR> } <BR> (5)消息循环
<BR> 根据Windows编程经验,有用户界面就有消息循环,以组织消息处
<BR>理函数句柄对用户界面发出的消息进行响应。遗憾的是,在JDK 1.0中
<BR>,尚没有类似MFC中的消息映射表之类的东西组织消息循环。不过,Jav
<BR>a发展势头迅猛,不久的将来就会有公司将它实现!现在,我们需要自己
<BR>来组织它:Applet类有一个action方法,在其中可以通过if...then语 <BR>句来对不同的消息进行响应。
<BR> public boolean action(Event e, Object o)
<BR> { <BR> Vector actionVector
= new Vector(); <BR> String actionString = new
String(); <BR> if(e.target instanceof Checkbox)
<BR> { <BR> <A
href='file://"数/'>file://"数/</A>据1"发出的消息
<BR> if(cbg.getCurrent() == cb1)
<BR> {
<BR>
actionVector = readData("1");
<BR>
actionString = readStringData("1");
<BR>
System.out.println("1"); <BR> }
<BR> <A
href="file://数/">file://数/</A>据2发出的消息
<BR> if(cbg.getCurrent() == cb2)
<BR> {
<BR>
actionVector = readData("2");
<BR>
actionString = readStringData("2");
<BR> }
<BR> <A
href="file://数/">file://数/</A>据3发出的消息
<BR> if(cbg.getCurrent() == cb3)
<BR> {
<BR>
actionVector = readData("3");
<BR>
actionString = readStringData("3");
<BR> }
<BR> int count = ac</SPAN> <BR>
<DIV
style="FONT-SIZE: 14px; LINE-HEIGHT: 25px"><STRONG>作者Blog:</STRONG><A
id=ArticleContent1_ArticleContent1_AuthorBlogLink
href="http://blog.csdn.net/dadado/"
target=_blank>http://blog.csdn.net/dadado/</A></DIV>
<DIV
style="FONT-SIZE: 14px; COLOR: #900; LINE-HEIGHT: 25px"><STRONG>相关文章</STRONG></DIV>
<TABLE id=ArticleContent1_ArticleContent1_RelatedArticles
style="BORDER-COLLAPSE: collapse" cellSpacing=0 border=0>
<TBODY>
<TR>
<TD><A
href="http://dev.csdn.net/article/5/article/05/05484.shtm">在网页上发布统计曲线</A>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><A name=#Comment></A>
<TABLE cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center
bgColor=#006699 border=0>
<TBODY>
<TR bgColor=#006699>
<TD id=white align=middle width=556 bgColor=#006699><FONT
color=#ffffff>对该文的评论</FONT> </TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=2 width="100%" align=center
bgColor=#666666 border=0>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3><SPAN
style="COLOR: #990000"><IMG height=16 hspace=1
src="在网页上发布统计曲线.files/ico_pencil.gif" width=16> </SPAN><SPAN
id=CommnetList1_CommnetList1_rpCommentList__ctl0_lblUserName>ycshowtop</SPAN>
<I>( <SPAN
id=CommnetList1_CommnetList1_rpCommentList__ctl0_lblPostTime>2001-03-08</SPAN>)</I>
</TD></TR>
<TR>
<TD width=532 bgColor=#ffffff colSpan=3><SPAN
id=CommnetList1_CommnetList1_rpCommentList__ctl0_lblContent><BR>我总觉得用applet太慢。</SPAN>
</TD></TR></TBODY></TABLE>
<DIV align=right><A id=CommnetList1_CommnetList1_Morelink
href="http://comment.csdn.net/Comment.aspx?c=2&s=5484">【评论】</A>
<A id=CommnetList1_CommnetList1_Hyperlink1
href="javascript:window.close();">【关闭】</A>
</DIV><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM><!-- 版权 -->
<HR align=center width=770 noShade SIZE=1>
<TABLE cellSpacing=0 cellPadding=0 width=500 align=center border=0>
<TBODY>
<TR>
<TD vAlign=bottom align=middle height=10><A
href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A
href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A
href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A
href="http://www.csdn.net/english">English</A> </TD>
<TD align=middle rowSpan=3><A
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG
height=48 src="在网页上发布统计曲线.files/biaoshi.gif" width=40 border=0></A></TD></TR>
<TR>
<TD vAlign=top align=middle>北京百联美达美数码科技有限公司 版权所有 京ICP证020026号</TD></TR>
<TR align=middle>
<TD vAlign=top><FONT face=Verdana>Copyright © CSDN.NET, Inc. All Rights
Reserved</FONT></TD></TR>
<TR>
<TD height=15></TD></TR></TBODY></TABLE><!-- /版权 -->
<SCRIPT>
document.write("<img src=http://count.csdn.net/count/pageview1.asp?columnid=4&itemid=11 border=0 width=0 height=0>");
</SCRIPT>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -