亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 在網頁上發布統計曲線.txt

?? 考取JAVA證件的資料
?? TXT
字號:
作者:allsky
email: zhangyan_@163.com
日期:2001-4-24 14:47:39
一、引言
  在熙熙攘攘的Internet上制作極富個性化的主頁、及時發布令人心動的信息 
,以便吸引全世界不同膚色、不同職業的人們駐"足"觀看,以致流連忘返,甚者慷慨 
解囊,是Internet沖浪者心中的夢想。通過合理運用HTML腳本語言提供的表格、列 
表、字體和段落的格式化、多媒體支持等,能使網頁內容清晰、層次分明、可讀性 
強,這些已有眾多文獻論述,在此不再贅述。 

  我們知道,在各種信息中,統計信息堪稱是用得較多、具有相當說服力的信息 
,而表達統計數據最直觀的方式是根據這些數據繪制曲線。文獻[1]用相當的篇幅 
介紹了如何在Windows操作系統中編寫一個具有OLE服務器能力的統計曲線繪制工 
具,而本文的主題則是:如何利用Java對繪圖的支持,編寫一個根據統計數據繪制曲 
線的小程序(Applet)Plot,通過把Plot編譯生成的字節碼文件Plot.class嵌入到H 
TML腳本中,從而實現在網頁上發布統計曲線的目的。 

  二、Java編程概述 

  1.Java語言規范 

  Java繼承了C++的基本語法,摒棄了一些過時的特征,比如預編譯的頭文件、宏 
、條件編譯,數據結構的結構體、枚舉體和聯合體,容易導致安全性問題的指針,以 
及晦澀難懂的多重繼承等,借鑒了Objective C的接口和Ada的包(package),以及內 
置了Internet網絡所需要的基本特征:結構中立(任何芯片、任何操作系統可以運 
行同一版本的Java程序)、安全性(避免感染病毒和防止非法訪問)、多線程和網絡 
通信等。事實上,上述被Java拋棄的特征,如指針和類的多重繼承,都是由于太復雜 
而遭C++程序員詛咒的;而新發展的特征,如結構中立、安全性、多線程和網絡通信 
等,是C++程序員極想實現而又非常難實現的特征。 

  2.JDK 

  Windows程序員一定都知道做Windows開發要用Windows SDK(軟件開發工具), 
現在,做Ja va開發的程序員也都知道編寫Java小程序要用JDK(Java開發工具)了。 
然而,與SDK主要采用結構體和函數等面向過程的方式提供Windows編程接口不同, 
JDK采用包、界面和類等面向對象的方式提供Java編程接口。從這種意義上說,JD 
K與Microsoft Visual C++的MFC,或者Bor land C++的OWL相似:它是一個類庫,一 
個應用框架,一個無縫集成的解決方案。 

  最先發布的JDK應該算JDK 1.0.3α,它是1995年Sun公司在全球范圍內進行Ja 
va程序設計大獎賽時隨HotJava 1.0.3α發放的。在該版本中,通用包實現得比較 
少,只有java.lang、j ava.util和java.io,而其他有關用戶界面和網絡通信的包 
都在HotJava中提供。爾后發行了1.0版,這是提供給各Java平臺開發公司的,其中 
,包全部獨立出來,共八個:java.applet、ja va.awt 、java.awt.image 、java. 
awt.peer 、java.io、java.lang、java.net 和java. util 以及一個sun.tools 
.debug。本文的程序基于1.0版本編寫。由于1.0.3α和1.0兩個版本的包安排差別 
很大,因而用前一個版本編寫的程序在后一個版本的編譯工具中編譯有可能通不過 
,要作修改。在1996年8月底,Sun公司在Internet上發布了1.1版,1.1版在1.0版基 
礎上稍有改進,兩個版本保持完全的兼容。 

  三、設計目標和程序構思 

  現在我們回到本文的主題上。首先,考慮編寫一個Java小程序,它的界面和功 
能可以這樣來描述: 

  統計標題和統計數據由HTML的param標注提供,統計數據的個數沒有限制; 
  根據數據的取值畫出帶刻度的X、Y軸; 
  在用線連接每個數據點的同時標出該點的坐標值; 
  提供繪制三組曲線的選擇。 

  針對上述要求,考慮構造兩個類來完成:Curve類用于實現繪制統計曲線的各個 
方面;Plo t類則派生于Applet,它是本程序的小程序類,通過使用Curve類來完成統 
計曲線的繪制。鑒于篇幅,下面給出實現要點及其程序。如需要全部源代碼的讀者 
,請與筆者聯系。 

  1.Curve類 

  Curve類構造主要基于以下幾點考慮。 

  (1)基類。Curve從Java所有類的基類Object派生,那么就可以不顯式聲明了。 


class Curve { 
...... 
} 

  (2)繪圖環境。根據Windows等窗口操作系統的編程經驗,向顯示器、打印機等 
輸出設備繪圖是通過繪圖環境來實現的。由于Java要面向所有平臺,包括Windows 
、Unix和Macintosh 等,它們的繪圖環境(如顯示器)概念很不一樣。那么,Java如 
何來實現繪圖呢?原來,Java在java.awt包中通過Graphics類來提供了對各種繪圖 
設備的設備環境的抽象類封裝。用Window s編程來作對照,Graphics所代表的概念 
就是Windows GDI的設備環境(Device Context),也就是MFC中CDC類或OWL的TDc類 
。有了這樣的比較,對Graphics就比較好理解了。也就是,所有繪制直線、矩形、 
橢圓、多邊形、設置字體、繪制文本等操作,調用Graphics類中的相應方法即可。 
下面代碼是通過Curve構造器將小程序類Plot的設備環境對象g傳遞給Curve,以被 
其他各個繪制方法使用: 

public Curve(Graphics g) 
{ 
myGC = g; 
...... 
} 

  (3)繪制算法。繪制算法就是繪制統計曲線的實現方法,包括繪制標題、坐標 
軸、數據聯線、標出數據點坐標等,以及其逆過程:清除這些繪制(因為當繪制其他 
曲線時,得保證刷新前一次繪制的所有內容)。鑒于篇幅,下面僅給出顯示數據的方 
法實現showData. 

public synchronized void showData(Vector v) 
{ 
float maxY=0; 
myGC.setColor(Color.red); 
int xPoint; 
int yPoint; 
//確定Vector中的最大值。 
for(int i = 0; i < v.size(); i++) 
{ 
float temp = ((Float)v.elementAt(i)).floatValue(); 
if(temp > maxY) 
{ 
maxY = temp; 
} 
} 
//確定第一個數據點的X坐標。 
xPoint = xOrigin + (xSpacing/2); 
int oldX = 0; 
int oldY = 0; 
//在數據點處繪制一個小圓圈。 
for(int j = 0; j < v.size(); j++) 
{ 
yPoint = yOrigin(int)((axisH/maxY) * 
((Float)v.elementAt(j)).floatValue()); 
myGC.fillRect(xPoint, yPoint, 3, 3); 
//在數據點之間聯線。 
if((oldX != 0) && (oldY != 0)) 
{ 
myGC.drawLine(oldX-xSpacing, oldY, xPoint, yPoint) 
; 
} 
myGC.setColor(Color.blue); 
//在數據點邊上寫出數據值。 
String coordString = 
Float.toString(((Float)v.elementAt(j)).floatValue( 
)); 
myGC.drawString(coordString, xPoint+5, yPoint - 4); 
myGC.setColor(Color.red); 
xPoint += xSpacing; 
oldX = xPoint; 
oldY = yPoint; 
} 
} 

  2.Plot類 

  Plot類構造主要基于以下幾點考慮。 

  (1)派生于Applet 

  一個Java小程序有且只有一個類派生于Applet,這就好像在MFC中,必須有且只 
有一個類派生于CWinApp一樣。另外,與MFC程序不一樣的是,不管包含派生于Appl 
et類的源程序文件( .java)命名為什么,生成的供網頁使用的字節碼文件(.class 
)只與該派生類同名,而與源文件名無關,這一點容易引起混淆。打個比方,如果包 
含Plot類的文件為PlotTest.java,而編譯生成的字節碼文件名為Plot.class,而不 
是PlotTest.class。最后,Plot必須聲明為public,這是由于一個編輯單元必須有 
且只有一個類聲明為public。 

public class Plot extends Applet 
{ 
...... 
} 

  (2)用戶界面 

  目前,Java在java.awt中提供小程序的用戶界面所需要的接口和類(共42個類 
和2個接口),其中實現了我們在Windows中見到的各種用戶界面,比如,菜單、對話 
框,以及各種控件,如按鈕、列表框、復選框、單選框、編輯框、組合框等。鑒于 
本程序要求從3組數據中選擇一組進行繪制,需要選用單選框控件。單選框在java 
.awt中用Checkbox和CheckboxGroup兩個類聯合實現:當Checkbox單獨使用時,它是 
復選框;而把它添加到CheckboxGroup中則變成了單選框。 

public void init() 
{ 
...... 
cbg = new CheckboxGroup(); 
//單選按鈕。 
cb1 = new Checkbox("數據1", cbg, false); 
cb2 = new Checkbox("數據2", cbg, false); 
cb3 = new Checkbox("數據3", cbg, false); 
} 

  (3)布局管理器 

  在Java中,為了使得小程序在各種操作系統中的用戶界面具有一致的外觀,采 
用布局管理器(Layout Manager)對用戶界面的相對位置進行管理。Java在java.a 
wt包中包含了流布局管理器(FlowLayout)、邊界布局管理器(BorderLayout)、卡 
片布局管理器(CardLayout)、網格布局管理器(GridLayout)和網格包布局管理器 
(GridBagLayout)5個布局管理器。如果希望3 個單選框按鈕放在繪制圖形的下面 
按一行排列,該如何編寫代碼呢?可以這樣來實現:首先設置Plot小程序為邊界布局 
,然后為3個單選框按鈕創建一個Panel對象cbPanel,用于組織3個控件,并設置cbP 
anel為網格布局,最后將cbPanel添加到Plot類中,并設置其方向為南(South)。 

public void init() 
{ 
...... 
//設置Plot為邊界布局。 
setLayout(new BorderLayout()); 
//為3個控件申請面板對象cbPanel。 
cbPanel = new Panel(); 
//設置網格布局管理器,并按1×3方式排列。 
cbPanel.setLayout(new GridLayout(1, 3)); 
//為各按鈕申請1個面板。 
cb1Panel = new Panel(); 
cb1Panel.add(cb1); 
cb2Panel = new Panel(); 
cb2Panel.add(cb2); 
cb3Panel = new Panel(); 
cb3Panel.add(cb3); 
//添加到統一的1個面板cbPanel中。 
cbPanel.add(cb1Panel); 
cbPanel.add(cb2Panel); 
cbPanel.add(cb3Panel); 
//添加cbPanel到Plot中,方向為:圖形在北,按鈕在南。 
add("South", cbPanel); 
} 

  (4)讀取HTML參數 

  因為本程序要用到統計數據和統計標題作為小程序的參數存放在HTML文檔中 
,所以在開始繪制圖形之前,需要從HTML讀取這些參數,然后才開始顯示標題和繪制 
統計曲線。其中,讀取統計標題和統計數據分別實現。 

 ?、俳y計標題,其格式可以是: 
    <param value="1-DESC" value="每月訪問者統計"> 
  1-DESC表示第一組數據的統計標題,"每月訪問者統計"是標題內容。 

public String readStringData(String s) 
{ 
String tempString = null; 
Integer param; 
boolean datapresent = true; 
int i = 0; 
try 
{ 
tempString = getParameter(s + "-DESC"); 
} catch (Exception e) 
{ 
System.out.println(e); 
} 
return tempString; 
} 

  ②統計數據,格式可以是: 
    <param value="1-2" value="14"> 
  1-2表示第一組數據的第二個數據點,14表示該數據點的值。 

public Vector readData(String s) 
{ 
Vector tempVector = new Vector(); 
Float param; 
String tempData = null; 
boolean datapresent = true; 
int i = 0; 
while(datapresent) 
{ 
try { 
tempData = getParameter(s + "-" + (i+1)); 
} 
catch(Exception e) 
{ 
System.out.println(e); 
} 
if(tempData == null) 
{ 
datapresent = false; 
} else { 
param = Float.valueOf(tempData); 
tempVector.addElement(param); 
i += 1; 
} 
} 
return tempVector; 
} 

  (5)消息循環 

根據Windows編程經驗,有用戶界面就有消息循環,以組織消息處理函數句柄對用戶 
界面發出的消息進行響應。遺憾的是,在JDK 1.0中,尚沒有類似MFC中的消息映射 
表之類的東西組織消息循環。不過,Java發展勢頭迅猛,不久的將來就會有公司將 
它實現!現在,我們需要自己來組織它:Applet類有一個action方法,在其中可以通 
過if...then語句來對不同的消息進行響應。 

public boolean action(Event e, Object o) 
{ 
Vector actionVector = new Vector(); 
String actionString = new String(); 
if(e.target instanceof Checkbox) 
{ 
//"數據1"發出的消息 
if(cbg.getCurrent() == cb1) 
{ 
actionVector = readData("1"); 
actionString = readStringData("1"); 
System.out.println("1"); 
} 
//數據2發出的消息 
if(cbg.getCurrent() == cb2) 
{ 
actionVector = readData("2"); 
actionString = readStringData("2"); 
} 
//數據3發出的消息 
if(cbg.getCurrent() == cb3) 
{ 
actionVector = readData("3"); 
actionString = readStringData("3"); 
} 
int count = actionVector.size(); 
c.clearHashMarks(); 
c.clearScreen(); 
c.drawAxes(curveWidth, curveHeight); 
c.makeHashMarks(count); 
c.showData(actionVector); 
c.makeTitle(actionString); 
repaint(); 
return true; 
} 
return false; 
}   

  3.HTML文檔和程序演示 

  下面列出了一個HTML實例,用于觀察上述編制的小程序,結果參見附圖。 

<html><body><center> 
<applet code="Plot.class" width = 350 height = 200> 
<param name="1-DESC" value="每月訪問者統計"> 
<param name="1-1" value="10"> 
<param name="1-2" value="4"> 
<param name="1-3" value="17"> 
<param name="1-4" value="24"> 
<param name="1-5" value="9"> 
<param name="1-6" value="7"> 
<param name="1-7" value="30"> 
<param name="2-DESC" value="每年訪問者統計"> 
<param name="2-1" value="17"> 
<param name="2-2" value="13"> 
<param name="3-DESC" value="一次購買稅統計"> 
<param name="3-1" value="10000"> 
<param name="3-2" value="130000"> 
<param name="3-3" value="16100"> 
<param name="3-4" value="14000"> 
</applet></center></body> 
<address><IMG SRC="\image\Li Zhenwen.jpg"> 
Li Zhenwen, Zhenwen@Websoft.com 
</address></html> 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线综合亚洲欧美在线视频| 精品国产凹凸成av人网站| 欧洲日韩一区二区三区| 欧美日本精品一区二区三区| 精品乱码亚洲一区二区不卡| 在线成人免费观看| 久久精品网站免费观看| 亚洲综合免费观看高清完整版在线 | 亚洲v日本v欧美v久久精品| 麻豆91小视频| 91在线精品一区二区| 91精品在线一区二区| 国产精品传媒视频| 麻豆精品一二三| 一本一道波多野结衣一区二区| 91精品久久久久久久99蜜桃 | 日韩av一区二区三区四区| 国产一区在线视频| 色呦呦日韩精品| 2023国产精品视频| 视频在线观看一区二区三区| av不卡免费在线观看| 91精品国产综合久久婷婷香蕉| 国产精品美女久久久久aⅴ国产馆| 亚洲精品高清在线观看| 国产成人自拍网| 欧美一级欧美一级在线播放| 国产精品不卡视频| 国产麻豆精品久久一二三| 91精品国产一区二区三区| 久久人人爽人人爽| 另类综合日韩欧美亚洲| 欧美狂野另类xxxxoooo| 亚洲精品一二三| 99久久精品国产网站| 欧美国产精品中文字幕| 国模少妇一区二区三区| 日韩欧美激情一区| 日韩国产欧美在线视频| 欧洲精品一区二区三区在线观看| 国产女人aaa级久久久级 | 国产日韩成人精品| 国产经典欧美精品| 久久久久久久久岛国免费| 久久99精品久久久久久动态图 | 7799精品视频| 一区二区三区四区在线免费观看| 成人深夜视频在线观看| 久久精品无码一区二区三区| 美女爽到高潮91| 欧美日本国产视频| 日本午夜精品视频在线观看 | 在线成人免费观看| 五月综合激情婷婷六月色窝| 欧美日韩国产小视频| 亚洲高清免费视频| 在线播放日韩导航| 美女视频黄久久| 欧美成人女星排行榜| 蜜臀精品一区二区三区在线观看 | 欧美在线观看视频在线| 亚洲一二三区在线观看| 91精品免费在线| 蜜桃传媒麻豆第一区在线观看| 精品日产卡一卡二卡麻豆| 无码av中文一区二区三区桃花岛| 欧美老年两性高潮| 亚洲视频在线观看三级| 色乱码一区二区三区88| 蜜臂av日日欢夜夜爽一区| 欧美激情在线一区二区| 欧美日韩成人一区| 国产高清无密码一区二区三区| 亚洲另类在线制服丝袜| 欧美刺激午夜性久久久久久久| 91视频精品在这里| 韩国午夜理伦三级不卡影院| 亚洲五码中文字幕| 国产日韩欧美制服另类| 制服丝袜在线91| 91在线观看视频| 国产综合色视频| 亚洲成av人片在线| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久综合网色—综合色88| 91久久久免费一区二区| 国产成人精品综合在线观看| 丝袜亚洲精品中文字幕一区| 国产精品久久久久久久久久久免费看 | 97精品视频在线观看自产线路二| 伦理电影国产精品| 亚洲自拍偷拍欧美| 国产精品久久久久久久蜜臀| 欧美电视剧免费全集观看| 欧美精品丝袜久久久中文字幕| 成人精品gif动图一区| 久久99国产精品尤物| 爽爽淫人综合网网站| 亚洲精品视频免费看| 国产精品久久久久9999吃药| 久久精子c满五个校花| 欧美xxxx老人做受| 日韩欧美国产综合| 日韩一区二区免费高清| 欧美日韩国产区一| 欧美系列日韩一区| 一本一道综合狠狠老| 99精品欧美一区| 色综合天天综合色综合av| 不卡一区中文字幕| yourporn久久国产精品| 91在线国内视频| 色综合久久综合| 欧美在线观看视频一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 欧美日韩一区国产| 欧美高清视频一二三区 | 欧美亚洲综合在线| 欧美日韩一级片在线观看| 欧美视频在线观看一区| 欧美色电影在线| 91 com成人网| 26uuu国产一区二区三区| 久久婷婷综合激情| 欧美国产日本视频| 亚洲黄色录像片| 午夜精品久久久久久久蜜桃app | 欧美变态tickle挠乳网站| 日韩亚洲欧美在线| 久久久久国产精品麻豆ai换脸| 日本一区二区三区视频视频| 亚洲人成7777| 日韩国产欧美三级| 国模少妇一区二区三区| 99这里都是精品| 欧美系列亚洲系列| 久久亚洲综合av| 亚洲伦理在线免费看| 免费在线成人网| 成人免费视频视频| 欧美性猛交xxxx黑人交| 精品处破学生在线二十三| 中文字幕精品综合| 石原莉奈一区二区三区在线观看| 久久成人av少妇免费| 99精品视频中文字幕| 91精品在线麻豆| 国产精品午夜春色av| 亚洲欧美aⅴ...| 免费在线观看一区| 成人手机电影网| 日韩午夜精品视频| 亚洲猫色日本管| 国产呦精品一区二区三区网站| 91行情网站电视在线观看高清版| 精品国产乱码久久久久久免费 | 蜜桃视频一区二区三区在线观看 | 欧美性大战久久久久久久蜜臀| 欧美本精品男人aⅴ天堂| 亚洲欧美二区三区| 国产成人自拍网| 91精品国产色综合久久ai换脸| 国产精品家庭影院| 久久精品久久久精品美女| 一本色道a无线码一区v| 久久久天堂av| 蜜桃免费网站一区二区三区| 91视频www| 久久精品夜色噜噜亚洲aⅴ| 日韩黄色免费电影| 99精品久久久久久| 国产女主播视频一区二区| 麻豆国产欧美一区二区三区| 91丨九色丨国产丨porny| 久久精品一区四区| 免费高清视频精品| 欧美日韩中文字幕一区二区| 亚洲色图一区二区三区| 成人午夜在线播放| 久久婷婷久久一区二区三区| 免费观看在线综合| 91.com在线观看| 偷偷要91色婷婷| 欧美色视频在线观看| 亚洲欧美另类综合偷拍| 成人精品视频一区二区三区尤物| 欧美精品一区二区三区在线播放| 热久久一区二区| 91精品国产综合久久小美女| 五月婷婷色综合| 欧美肥大bbwbbw高潮| 五月婷婷久久综合| 777xxx欧美| 青草av.久久免费一区| 欧美一三区三区四区免费在线看| 亚洲一区欧美一区| 欧美精品丝袜久久久中文字幕| 亚洲综合激情网| 在线电影院国产精品| 日本不卡一二三|