国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

VJ6.0的使用方法

2019-11-18 15:10:57
字體:
供稿:網(wǎng)友

  概述、VJ6的獲得與安裝

一 概述

在以前的javaApplet教程中給大家介紹了一點(diǎn)點(diǎn)VJ6.0的使用方法,收到很多網(wǎng)友來信。這幾天有時(shí)間,給大家介紹一下VJ6的使用方法。但這里給大家介紹的,只是VJ本身的使用方法,不涉及編程方法與程序說明,假如想學(xué)基本的語(yǔ)法什么的,小弟就對(duì)不住了,有時(shí)間的話,再給大家說說。
在Java的眾多編譯調(diào)試工具中,VJ6.0算得上是一個(gè)比較不錯(cuò)的。因?yàn)樗哂泻芏嗟膬?yōu)點(diǎn),比較常見和突出的(我認(rèn)為),可以概括如下:

1. 與Windows應(yīng)用程序的界面是一致的,微軟的東西,這些方面都差不多,因此,對(duì)于初學(xué)者來說,是非常輕易上手的。一般的菜單目錄什么的呀,都不用解釋了,一看就會(huì)。

2. 自帶的MFC類庫(kù),是JAVA中沒有的,實(shí)現(xiàn)了與WindowsAPI的接口,使得編寫界面像VB一樣的簡(jiǎn)單了。雖然這是一個(gè)很多人批評(píng)的東西,但對(duì)于初學(xué)者來說,卻有很大的一個(gè)好處,因?yàn)樗挥迷O(shè)計(jì)界面了, 可以直接學(xué)習(xí)Java的語(yǔ)法,要知道,編寫程序的界面是一個(gè)很麻煩的事情。

3. 調(diào)試方便,這是最沒有說的了,在程序的調(diào)試方面,微軟的Visual Stdio系列都是非常棒的,沒有人會(huì)懷疑。這是非常不錯(cuò)的。

4. 自動(dòng)補(bǔ)償功能以及一些其他編譯器沒有的功能。假如你用過VB的話,將會(huì)對(duì)其中的VB補(bǔ)償功能非常的贊賞,自動(dòng)語(yǔ)句完成功能也稱為自動(dòng)列舉成員功能。而VJ6中也引入了這些功能。關(guān)于這些方面的具體介紹,請(qǐng)看后面的內(nèi)容。

至于另外的一些,我看來也沒有什么非凡了,因此也就不提了。

二 VJ6.0的獲得

沒有辦法,微軟一向都是小氣鬼,他的東西都是要錢的,VJ6當(dāng)然也是要錢的了,不過,它推出的好象是測(cè)試版本。也有一個(gè)90天的試用版本可以免費(fèi)試用,用起來沒有什么不同之處,但是用一段時(shí)間就要重新安裝,有點(diǎn)麻煩,就這樣湊合著用吧。還行。至少可以免不少的錢。(筆者就用的這種)

好了。基本的就這些了。下面給你說說安裝

三 VJ6.0的安裝

安裝基本上沒有什么好說的了,假如你安裝過VB或者是VC什么的話,那完全可以自定義安裝,假如沒有安裝過的話,先建議你選擇默認(rèn)安裝選擇項(xiàng),包含了基本的功能。安裝過程和裝別的軟件沒有什么不同,可能有的人安裝最后會(huì)出現(xiàn)一個(gè)是否安裝某某公司的數(shù)字簽名的對(duì)話框,那裝也行,不裝也行,選擇"NO"退出,點(diǎn)擊"重新啟動(dòng)計(jì)算機(jī)"對(duì)話框的確定按鈕,重新啟動(dòng)就可以了。下面是它的啟動(dòng)界面,如圖1:

VJ6中各種菜單與工具欄的介紹

一 基本菜單的介紹
VJ6中的菜單都是活動(dòng)菜單,下面是它的主菜單,如圖2:

圖2

菜單選項(xiàng)挺多的,但你不一定能看見這么多,下面是它的基本的菜單,如圖3:

圖3

由于這些界面都比較的熟悉,不具體介紹,只做一些基本的說明。
"文件"菜單:這個(gè)菜單主要是治理文件的處理,新建文件,打開文件,保存文件與關(guān)閉文件,打印之類,和其他的微軟的軟件基本一樣,如圖4;

圖4

編輯菜單也是一樣,見圖5,功能選項(xiàng)也沒有不同的地方;

圖5

視圖菜單"view"也用不找介紹了吧,見圖6,一見就知道是干什么的了;

圖6

工程菜單""builder"菜單就是編譯菜單了,在這里編譯。
"Debug"就是調(diào)試與運(yùn)行選擇菜單了。
"Tools, Windows , Help"這三個(gè)選項(xiàng)基本上就不用我說了,也和別的軟件沒有什么區(qū)別了。
至于圖2中的另外一些選項(xiàng),那是在編輯網(wǎng)頁(yè)的時(shí)候用的,與VJ沒有多大的關(guān)系了,這里就不說了,相信大家自己也非常的熟悉,一看就會(huì)用。

二 工具欄
VJ中的工具欄要是全部顯示出來的話,可能會(huì)滿屏幕都是,因此,它只顯示了一個(gè),如圖8:

圖8

這些圖標(biāo)也是大家非常熟悉的,其中有三個(gè)圖標(biāo),是顯示浮動(dòng)窗口的快捷按鈕。像錄音機(jī)播放按鈕的,則上運(yùn)行程序的快捷按鈕了。
自己定義工具欄的時(shí)候,只要在工具欄的地方點(diǎn)鼠標(biāo)右鍵,選擇自己定義選項(xiàng),就可以彈出對(duì)話窗口,自己定義工具欄。

三 浮動(dòng)面板

主要的浮動(dòng)面板有四個(gè),如圖9:
一個(gè)工程瀏覽,這里就像資源治理器一樣方便,使你治理這個(gè)工程里面的所有東西,包括各種文件與文件夾。
另外一個(gè)則是屬性窗口了,屬性窗口會(huì)根據(jù)你編輯的內(nèi)容而會(huì)不同,當(dāng)你編輯窗體時(shí),它會(huì)像VB中的那樣,包括窗體的各種信息選項(xiàng),假如是編輯網(wǎng)頁(yè),那么選項(xiàng)就會(huì)變成背景,
字體屬性等等。
左邊一個(gè)是工具箱,只要用鼠標(biāo)按住一個(gè)控件,往你窗體上需要的地方一放就可以了。不用多解釋。
下面的浮動(dòng)面板則是一 個(gè)任務(wù)與信息窗口了,顯示一些適時(shí)信息。
各種面板的調(diào)整:
你只需要用鼠標(biāo)將一個(gè)浮動(dòng)面板的控制快往另外一個(gè)面板上面一放,就可以將兩個(gè)面板合成一個(gè)面板,同理,假如已經(jīng)合成了面板,只要拖動(dòng)它下面的控制塊,就可以將它拉出來來,形成一個(gè)單獨(dú)的面板。

文本編輯器是主窗口,也是最重要的窗口,這個(gè)窗口包含了Java和Html的源代碼,這個(gè)編輯器里面的各種文字的顏色是不一樣的,文本的不同顏色代表了不同的語(yǔ)句類型,綠色代表的是注釋的語(yǔ)句,藍(lán)色代表的是要害字,黑色則是可執(zhí)行語(yǔ)句了。當(dāng)你通過鍵盤輸入字符的時(shí)候,文本編輯器可以幫助你實(shí)現(xiàn)一種統(tǒng)一的縮進(jìn)風(fēng)格。根據(jù)你所選擇的風(fēng)格類型設(shè)置,編輯器能夠自動(dòng)地縮進(jìn)語(yǔ)句,并且把花括號(hào)對(duì)整潔。上面說的所有這些功能,都可以自己設(shè)置,設(shè)置步驟為選擇“Tools”菜單中的“Option”選項(xiàng),并且在Text Editor子菜單中選擇Java Format選項(xiàng),如圖7,

圖7

這里不但是設(shè)置字體格式的地方,還是設(shè)置所有環(huán)境參數(shù)的地方,各種參數(shù)都是通過這里而改變的。各種功能參數(shù)的改變都比較的具體,比如說VJ的自動(dòng)補(bǔ)償功能,就是選中Text Editor中的Per Language中的Auto list members。相信大家也自己看的懂,這里就不羅嗦了。

關(guān)于WFC

WFC顧名思義,就是Windows 基礎(chǔ)類庫(kù)的意思,WFC類庫(kù)是VJ6中,微軟公司為了使Java能夠使用Windows API而引入的,這個(gè)WFC的好處就是我們的所見即所得形式的窗體界面及其組件。VJ中的像VB一樣的窗體編輯,完全是WFC的功勞。但是,由于WFC是引用的Windows的API(應(yīng)用程序接口),這就使得用WFC生成的JAVA程序只能在微軟的操作系統(tǒng)中使用,但我們要的是Java的跨平臺(tái)特性,使得Java程序能在別的操作系統(tǒng)中也能使用,這就矛盾了,也正是由于這樣,微軟被SUN起訴,對(duì)薄公堂,結(jié)果當(dāng)然是微軟輸了,但是WFC沒有被取消,只是在創(chuàng)建新的項(xiàng)目時(shí),假如使用了WFC,那么VJ6就非凡會(huì)顯示一個(gè)對(duì)話框,提醒你注重。

由于WFC的緣故,筆者在這里就不具體分析它了,在以后的講解中,筆者也不提及WFC,而VJ6中有很多的使用WFC的地方,因此,VJ6中,就有很多的功能不說了,比如說數(shù)據(jù)庫(kù),因?yàn)槟侨桥cWFC有關(guān)的,去掉了WFC,確實(shí)就去掉了VJ6的很大一部分功能了,但沒有辦法,我們用不著,再一點(diǎn)就是WFC雖然好用,但也非常麻煩的,幾乎相當(dāng)于重新學(xué)習(xí)一些新的類庫(kù)與方法,但這學(xué)了并沒有用,至少現(xiàn)在,它一點(diǎn)市場(chǎng)都沒有。

區(qū)別你用了WFC的很方便的地方就是看看Java程序開始的地方是否引入了WFC包,假如看到有"import com. ms. wfc. app. *;"那么就說明你用了WFC,ms本身就是 Microsoft 的意思。

好了,你現(xiàn)在應(yīng)該已經(jīng)明白我說這些的意思了吧。

下面就讓我們看看具體怎么用VJ6來編寫與調(diào)試程序吧!

一個(gè)application的全部調(diào)試過程

我們現(xiàn)在舉例來說明一個(gè)Application的全部調(diào)試過程
打開VJ6,它啟動(dòng)時(shí),會(huì)自動(dòng)打開如下的窗口,如下圖:

在New選項(xiàng)中的Application中,有三個(gè)選項(xiàng),第一個(gè)是Windows Application,這就是使用微軟自帶類庫(kù)進(jìn)行WFC程序的界面設(shè)計(jì)應(yīng)用程序,第二個(gè)選項(xiàng)是 Console Application 這是DOS下的程序設(shè)計(jì),沒有界面要求,只要完成核心代碼要求就可以了,不必設(shè)計(jì)界面,當(dāng)然也用不著WFC類庫(kù)了。第三個(gè)選項(xiàng)為"Application Wizard"這個(gè)選項(xiàng)功能就是應(yīng)用程序設(shè)計(jì)向?qū)Я耍灰阏罩f的做,一步一步往下走,就可以了,用這個(gè)向?qū)гO(shè)計(jì)出來的程序,具有很好的界面,一說到界面,當(dāng)然就也用了WFC,這也不在我的討論只列了。給大家舉一個(gè)DOS下的應(yīng)用程序的例子,在上圖中,我們選擇Console Application,填好名字與路徑之后,點(diǎn)擊 確定按鈕,VJ6就會(huì)自動(dòng)幫你生成一些格式化的代碼,如下:
/**
* This class can take a variable number of parameters on the command
* line. Program execution begins with the main() method. The class
* constrUCtor is not invoked unless an object of type ´Class1´
* created in the main() method.
*/
public class Class1
{
/**
* The main entry point for the application.
*
* @param args Array of parameters passed to the application
* via the command line.
*/
public static void main (String[] args)
{
// TODO: Add initialization code here
}
}
它前面的"/**"與"*/"之間的說明性語(yǔ)句一大堆,告訴你一些基本的內(nèi)容,基本上不用理會(huì),在主函數(shù)"main"中,有一個(gè)TODO,那就是我們要加入代碼的地方了,我們就加入一個(gè)例子說明一下,在TODO下一行,我們鍵入一行“System. out. println ("Hello!");”(請(qǐng)注重大小寫),假如你學(xué)過C或者JAVA的話,那就知道是什么意思了,這個(gè)程序是一個(gè)最基本的HELLO程序,在輸入的時(shí)候要注重到它的自動(dòng)補(bǔ)償功能,當(dāng)你敲完System后,再敲一個(gè)點(diǎn)時(shí),后面就會(huì)出現(xiàn)一個(gè)下拉選擇框,你再敲一個(gè)"o"的時(shí)候,選擇項(xiàng)就自動(dòng)停在了"out"選項(xiàng)上面。這時(shí)候只要按一下空格,就可以看到"out"三個(gè)字母已經(jīng)自動(dòng)輸入了,當(dāng)你再敲一個(gè)點(diǎn)的時(shí)候,同樣又會(huì)出現(xiàn)一個(gè)下拉選擇框,按下"p"字母后,選擇項(xiàng)就停留在了以"p"開頭的選項(xiàng)上,按下方向鍵的向下鍵,找到"println"按下空格,就會(huì)自動(dòng)補(bǔ)償輸入了。同理,當(dāng)你此時(shí)按下"("時(shí),就有一個(gè)選擇項(xiàng)提示,1 of 10,后面是方法,表示這是10種方法中的第一種方法,按下方向鍵的向下或者向上鍵,就可以看到不同方法的提示了,每種提示中都有參數(shù)的個(gè)數(shù),參數(shù)的類型等提示,非常的方便快捷,使你的輸入一般不會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。(這要求你已經(jīng)打開了自動(dòng)補(bǔ)償功能,假如沒有打開,請(qǐng)參看前面打開的方法)假如你不小心輸入錯(cuò)了,則在最下面的浮動(dòng)窗口"Task List"中,會(huì)用紅色的下化線顯示你的輸入有問題,或者是藍(lán)色的警告。

在加入這一行以后,這個(gè)程序就已經(jīng)完成了,下面的工作便是編譯與運(yùn)行了,選擇"Build"菜單中的"Build"或者"Rebuild"選項(xiàng),這就是編譯了,編譯后,假如有錯(cuò)誤,會(huì)在最下面的浮動(dòng)窗口"Task List"中提示你,假如沒有錯(cuò)誤,在狀態(tài)欄上會(huì)顯示出"Solution update successed "表示已經(jīng)編譯成功,然后選擇"Debug"菜單中的"Start"或者按下F5鍵,運(yùn)行,這時(shí),會(huì)彈出一個(gè)Dos窗口,顯示出這個(gè)程序的結(jié)果:"Hello!"。其實(shí),你也可以將編譯與運(yùn)行看結(jié)果合成一個(gè)動(dòng)作,那就是直接運(yùn)行,假如沒有編譯的化,它會(huì)自動(dòng)對(duì)你的程序進(jìn)行編譯。工具欄上有快捷圖標(biāo)"",用鼠標(biāo)一點(diǎn)。就會(huì)自動(dòng)編譯并運(yùn)行了。運(yùn)行結(jié)果如下: 

雖然我對(duì)大家建議不要用WFC,但這里還是給大家舉一個(gè)用WFC的例子,在前面的圖中,我們選擇第一個(gè)選項(xiàng)"Windows Application",填好名字與路徑之后,應(yīng)該會(huì)出現(xiàn)如下所示的窗口界面。

這個(gè)時(shí)候,假如你運(yùn)行的化,會(huì)發(fā)現(xiàn)它有一個(gè)基本的窗口,能最大化,最小化,以及關(guān)閉程序等功能。
假如你仔細(xì)看看屬性浮動(dòng)窗口,會(huì)發(fā)現(xiàn)和VB一樣的許多窗口屬性,我在這里就不一一說明它的作用了,你自己按著屬性窗口中的內(nèi)容一項(xiàng)項(xiàng)自己調(diào)整或者改變,然后看看你的界面變了些什么,多用幾遍后,就知道這個(gè)屬性窗口是干什么用的了。
現(xiàn)在給大家舉一個(gè)簡(jiǎn)單的例子,兩個(gè)文本輸入框,一個(gè)按鈕,你能夠在第一個(gè)文本框中輸入內(nèi)容,點(diǎn)擊按鈕后,第二個(gè)文本框中的內(nèi)容將會(huì)與第一個(gè)文本框中的內(nèi)容一模一樣,也就是復(fù)制第一個(gè)文本框的內(nèi)容。這個(gè)例子做起來,很簡(jiǎn)單,步驟如下:
1. 拖動(dòng)工具欄上的文本框控件到你的Form界面上,拖兩個(gè),那么系統(tǒng)會(huì)自動(dòng)將第一個(gè)命名為"Edit1"和"Edit2",如下圖:

2. 將第二個(gè)文本框選中,然后在屬性窗口中選擇"enabled"選擇項(xiàng),然后將后面的選擇項(xiàng)的內(nèi)容由"true"改為"false"使之不可以被編輯,也就是不能輸入文字的意思。如下圖:

3. 增加一個(gè)按鈕,由工具箱上直接拖動(dòng)到"Form"中就可以了。按鈕名字自己隨便了。如下圖:

4. 雙擊按鈕,將會(huì)打開代碼編輯器,并且顯示如下的內(nèi)容:

private void button1_click(Object source, Event e)
{

}

在這個(gè)按鈕事件代碼中增加一行,如下:

edit2.setText(edit1.getText());

好了,這個(gè)簡(jiǎn)單程序也已經(jīng)編寫完了,試著點(diǎn)一下運(yùn)行圖標(biāo)看看,就會(huì)看到你自己想要的界面與輸出結(jié)果了。程序的完整代碼如下:

import com.ms.wfc.app.*;
import com.ms.wfc.core.*;
import com.ms.wfc.ui.*;
import com.ms.wfc.html.*;

/**
* This class can take a variable number of parameters on the command
* line. Program execution begins with the main() method. The class
* constructor is not invoked unless an object of type ´Form1´ is
* created in the main() method.
*/
public class Form1 extends Form
{
public Form1()
{
// Required for Visual J++ Form Designer support
initForm();

// TODO: Add any constructor code after initForm call
}

/**
* Form1 overrides dispose so it can clean up the
* component list.
*/
public void dispose()
{
super.dispose();
components.dispose();
}

private void button1_click(Object source, Event e)
{
edit2.setText(edit1.getText());
}

/**
* NOTE: The following code is required by the Visual J++ form
* designer. It can be modified using the form editor. Do not
* modify it using the code editor.
*/
Container components = new Container();
Edit edit1 = new Edit();
Edit edit2 = new Edit();
Button button1 = new Button();

private void initForm()
{
this.setText("Form1");
this.setAutoScaleBaseSize(new Point(6, 12));
this.setClientSize(new Point(192, 165));

edit1.setLocation(new Point(48, 16));
edit1.setSize(new Point(100, 19));
edit1.setTabIndex(0);
edit1.setText("edit1");

edit2.setEnabled(false);
edit2.setLocation(new Point(48, 56));
edit2.setSize(new Point(100, 19));
edit2.setTabIndex(1);
edit2.setText("edit2");

button1.setLocation(new Point(64, 120));
button1.setSize(new Point(75, 23));
button1.setTabIndex(2);
button1.setText("button1");
button1.addOnClick(new EventHandler(this.button1_click));

this.setNewControls(new Control[] {
button1,
edit2,
edit1});
}

/**
* The main entry point for the application.
*
* @param args Array of parameters passed to the application
* via the command line.
*/
public static void main(String args[])
{
Application.run(new Form1());
}
}

至于其他的程序,也就是不用WFC,而又要編寫有界面的程序,也就是用AWT寫界面,那就沒有辦法了,只能自己寫AWT代碼了。基本過程為:
1. 選擇"New"選項(xiàng)中的"Visual J++ Projects"選項(xiàng)中的"Empty Projects"。選擇好名字與路徑之后,系統(tǒng)就會(huì)幫你建立一個(gè)新的工程了。但是這個(gè)里面什么文件也沒有。
2. 這個(gè)工程是空的,這時(shí)候,你可以導(dǎo)入代碼文件也可以自己建立代碼文件。建立類或者"Form"之類的文件,請(qǐng)選擇"Project"菜單中的"Add Item"選項(xiàng),建立自己想要的文件就可以了,代碼嘛,當(dāng)然只能自己手工輸入了,沒有別的辦法。不過,這里倒是什么文件都可以建立,包括Java Applet在內(nèi)。因此,假如你的工程不止一個(gè)文件或者比較大的話,是肯定要用到這個(gè)選擇項(xiàng)的!這是一個(gè)必須學(xué)會(huì)的用法了。

一個(gè)Applet的編寫與調(diào)試過程

Applet與Application雖然有很大的不同,但操作上基本同Application的操作差不多,但編輯上還是有一些差別的。因此,這里也給大家舉一個(gè)例子。這個(gè)例子稍為有點(diǎn)復(fù)雜,希望看的時(shí)候已經(jīng)學(xué)過了一些Java的基本知識(shí)了。這個(gè)例子的目的是要實(shí)現(xiàn)一個(gè)跑馬燈的Java Applet程序,這個(gè)例子的效果如下:

1 選擇新建菜單“new”,然后選擇“new”下面的選項(xiàng):Applet on HTML,設(shè)置好名稱與路徑之后,按下確定按鈕,系統(tǒng)將自動(dòng)幫我們生成一兩個(gè)文件,一個(gè)是Applet的初始代碼文件,另外一個(gè)就是HTML網(wǎng)頁(yè)文件了。如下圖:



2 在工程瀏覽窗口中雙擊Applet1文件,這時(shí)就可以打開這個(gè)代碼文件了。代碼文件比較長(zhǎng),這里不列出,要查看代碼,請(qǐng)點(diǎn)擊這里。雙擊page1.html文件,也就打開這個(gè)HTML文件了,這個(gè)文件打開時(shí),會(huì)顯示如下圖所示:



這個(gè)窗口里面有三個(gè)選項(xiàng)了,假如你用過Frontpage,那么你將對(duì)這個(gè)非常的熟悉。這里就像Frontpage一樣,是一個(gè)網(wǎng)頁(yè)編輯器,工具箱中也有你編輯網(wǎng)頁(yè)所要的控件。不用多解釋,看看Source(源代碼),打開后,有的可能顯示的是該Applet的內(nèi)容。而有的可能顯示的是代碼,這與VJ6的初始設(shè)定有關(guān),在Applet上面點(diǎn)擊鼠標(biāo)右鍵,選擇“Always view as text”后,就可以看到代碼了,代碼如下:

<applet
code=Applet1.class
name=Applet1
width=320
height=200 VIEWASTEXT>
<param name=label value="This string was passed from the HTML host.">
<param name=background value="008080">
<param name=foreground value="FFFFFF">
</applet>

這個(gè)不用多解釋,按照自己的要求改就行了。此時(shí)不能點(diǎn)擊Quick View進(jìn)行快速預(yù)覽,因?yàn)樵揂pplet還沒有被編譯成Class文件。

3 此時(shí)將這個(gè)Applet程序運(yùn)行,按下F5鍵,直接運(yùn)行,那么此時(shí)VJ6會(huì)自動(dòng)編譯此程序,并且用默認(rèn)的瀏覽器打開這個(gè)HTML文件并顯示出來。

4 這個(gè)時(shí)候我們就要進(jìn)行真正的添加代碼的工作了。只有添加了必要的代碼后,才能達(dá)到預(yù)期的目標(biāo)嘛!請(qǐng)打開源代碼文件Applet1,雙擊就行!

先要做的工作,當(dāng)然是設(shè)置變量,變量放在主類當(dāng)中,如下:

Font ft; //文字字體對(duì)象實(shí)例
String theString, font, style; //移動(dòng)的字符串、字體類型及樣式
int size, speed; //文字的大小,移動(dòng)速度
int xSet, Max, Min;//文字所在位置的x坐標(biāo),右邊界和左邊界

定義好變量后,就要像給出的源代碼一樣,加入一些初始的代碼了。

private final String param_string="string";
private final String param_font="font";
private final String param_style="style";
private final String param_size="size";
private final String param_speed="speed";

現(xiàn)在要做的事情就是從網(wǎng)頁(yè)文件HTML中取得各種參數(shù)了,就像初始代碼取得參數(shù)一樣,這些可以參照初始代碼而寫出來!如下。

String param;
param = getParameter ( param_string);
if(param !=null) theString= param;//取得字符串參數(shù)
param = getParameter ( param_font);
if(param !=null) font= param;//取得字型參數(shù)
param= getParameter ( param_size);
if (param !=null) size=Integer. parseInt ( param);//取得字提大小參數(shù)
param= getParameter ( param_style);
if(param!=null) style= param;//取得字型樣式參數(shù)
param= getParameter ( param_speed);
if(param !=null) speed=Integer.parseInt (param);//取得文字移動(dòng)速度參數(shù)
int vice_style = Font.PLAIN ;
if(style. equalsIgnoreCase ( "BOLD"))
vice_style=Font.BOLD ;
if (style.equalsIgnoreCase ("ITALIC"))
vice_style=Font.ITALIC ;//處理得到的字型參數(shù),忽略大小寫

ft=new Font(font,vice_style,size);
FontMetrics fm= getFontMetrics(ft);//生成FontMetrics類對(duì)象實(shí)例
Min= -fm.stringWidth (theString);
Max= getSize().width ;
Offset= Max;

接下來要做的事情,當(dāng)然是要做最重要的工作了。編寫程序的主要部分,字體滾動(dòng)的過程。這部分的代碼就不具體解釋了。希望你已經(jīng)學(xué)過Java語(yǔ)法了。

public void paint(Graphics g)
{
int ySet=getSize().height ;//yset為輸出字符串的y坐標(biāo)變量
ySet=(ySet-size)/2;
g.setFont (ft);
g.setColor (Color.red);
g.drawString (theString,xSet,ySet+40);
//+40是用來調(diào)整輸出時(shí)的高度用的。
xSet--;
if(xSet
}

public Thread TextMoveRunnable=null;
public void start()
{
if(TextMoveRunnable==null)
{
TextMoveRunnable=new Thread (this);
TextMoveRunnable.start ();
}
}
public void run()
{
while(true)
{
try{
repaint();Thread.sleep (speed);
}catch(InterruptedException e) {}
}
}
public void stop()
{
if (TextMoveRunnable!=null)
{
TextMoveRunnable.stop();
TextMoveRunnable=null;
}
}

這部分代碼應(yīng)該加在與initForm()并列的地方,可以在之前,也可以在之后。在加完這些代碼之后,程序的大體就完成了。但假如你此時(shí)編譯的話,肯定會(huì)出現(xiàn)錯(cuò)誤,在Task List上會(huì)顯示出來,并且錯(cuò)誤為“Class ´Thread´ doesn´t have a constructor that matches ´Thread(Applet1)´ (J0082)”這是因?yàn)榧舆M(jìn)去的代碼涉及到了線程,而主程序不知道,沒有相應(yīng)的接口,(J0082)為錯(cuò)誤的序號(hào),查找相應(yīng)的工具,有這個(gè)錯(cuò)誤的具體解釋。要解決這個(gè)錯(cuò)誤,只要在主類后面加上一個(gè)接口就可以了。如下:

public class Applet1 extends Applet implements Runnable

注重后面的“implements Runnable”。再編譯,錯(cuò)誤已經(jīng)解除了,但這時(shí)候顯示的結(jié)果還是和開始的時(shí)候顯示的效果一樣。這是因?yàn)檫€沒有在HTML中設(shè)置該設(shè)置的內(nèi)容。

查看Applet1.java的內(nèi)容:
import java.awt.*;
import java.applet.*;

/**
* This class reads PARAM tags from its HTML host page and sets
* the color and label properties of the applet. Program execution
* begins with the init() method.
*/
public class Applet1 extends Applet implements Runnable
{
/**
* The entry point for the applet.
*/
Font ft; //文字字體對(duì)象實(shí)例
String theString, font, style; //移動(dòng)的字符串、字體類型及樣式
int size, speed; //文字的大小,移動(dòng)速度
int xSet, Max, Min;//文字每次移動(dòng)的位移量,右邊界和左邊界

public void init()
{
initForm();

usePageParams();

// TODO: Add any constructor code after initForm call.
}

private final String labelParam = "label";
private final String backgroundParam = "background";
private final String foregroundParam = "foreground";
private final String param_string="string";
private final String param_font="font";
private final String param_style="style";
private final String param_size="size";
private final String param_speed="speed";

/**
* Reads parameters from the applet´s HTML host and sets applet
* properties.
*/
private void usePageParams()
{
final String defaultLabel = "Default label";
final String defaultBackground = "C0C0C0";
final String defaultForeground = "000000";
String labelValue;
String backgroundValue;
String foregroundValue;

/**
* Read the ,
* ,
* and tags from
* the applet´s HTML host.
*/
labelValue = getParameter(labelParam);
backgroundValue = getParameter(backgroundParam);
foregroundValue = getParameter(foregroundParam);

if ((labelValue == null) (backgroundValue == null)
(foregroundValue == null))
{
/**
* There was something wrong with the HTML host tags.
* Generate default values.
*/
labelValue = defaultLabel;
backgroundValue = defaultBackground;
foregroundValue = defaultForeground;
}

/**
* Set the applet´s string label, background color, and
* foreground colors.
*/
label1.setText(labelValue);
label1.setBackground(stringToColor(backgroundValue));
label1.setForeground(stringToColor(foregroundValue));
this.setBackground(stringToColor(backgroundValue));
this.setForeground(stringToColor(foregroundValue));
String param;
param = getParameter ( param_string);
if(param !=null) theString= param;//取得字符串參數(shù)
param = getParameter ( param_font);
if(param !=null) font= param;//取得字型參數(shù)
param= getParameter ( param_size);
if (param !=null) size=Integer. parseInt ( param);//取得字提大小參數(shù)
param= getParameter ( param_style);
if(param!=null) style= param;//取得字型樣式參數(shù)
param= getParameter ( param_speed);
if(param !=null) speed=Integer.parseInt (param);//取得文字移動(dòng)速度參數(shù)
int vice_style = Font.PLAIN ;
if(style. equalsIgnoreCase ( "BOLD"))
vice_style=Font.BOLD ;
if (style.equalsIgnoreCase ("ITALIC"))
vice_style=Font.ITALIC ;//處理得到的字型參數(shù),忽略大小寫

ft=new Font(font,vice_style,size);
FontMetrics fm= getFontMetrics(ft);//生成FontMetrics類對(duì)象實(shí)例
Min= -fm.stringWidth (theString);
Max= getSize().width ;
xSet= Max;
}

/**
* Converts a string formatted as "rrggbb" to an awt.Color object
*/
private Color stringToColor(String paramValue)
{
int red;
int green;
int blue;

red = (Integer.decode("0x" + paramValue.substring(0,2))).intValue();
green = (Integer.decode("0x" + paramValue.substring(2,4))).intValue();
blue = (Integer.decode("0x" + paramValue.substring(4,6))).intValue();

return new Color(red,green,blue);
}

/**
* External interface used by design tools to show properties of an applet.
*/
public String[][] getParameterInfo()
{
String[][] info =
{
{ labelParam, "String", "Label string to be displayed" },
{ backgroundParam, "String", "Background color, format "rrggbb"" },
{ foregroundParam, "String", "Foreground color, format "rrggbb"" },
};
return info;
}

Label label1 = new Label();

/**
* Intializes values for the applet and its components
*/
void initForm()
{
this.setBackground(Color.lightGray);
this.setForeground(Color.black);
label1.setText("label1");
this.setLayout(new BorderLayout());
this.add("North",label1);
}

public void paint(Graphics g)
{
int ySet=getSize().height ;
ySet=(ySet-size)/2;
g.setFont (ft);
g.setColor (Color.red);
g.drawString (theString,xSet,ySet+40);
//+40是用來調(diào)整輸出時(shí)的高度用的。
xSet--;
if(xSet
}

public Thread TextMoveRunnable=null;
public void start()
{
if(TextMoveRunnable==null)
{
TextMoveRunnable=new Thread (this);
TextMoveRunnable.start ();
}
}
public void run()
{
while(true)
{
try{
repaint();Thread.sleep (speed);
}
catch(InterruptedException e) {}
}
}
public void stop()
{
if (TextMoveRunnable!=null)
{
TextMoveRunnable.stop();
TextMoveRunnable=null;
}
}
}

5 修改HTML內(nèi)的代碼:

<applet
code=Applet1.class
name=movetext
width=400
height=100 VIEWASTEXT>
<param name=label value="This string was passed from the HTML host.">
<param name=background value="008080">
<param name=foreground value="FFFFFF">
<param name=string value="你好, 這是一個(gè)例子!">
<param name=font value="宋體">
<param name=style value=BOLD>
<param name=size value=40>
<param name=speed value=20>
</applet>
當(dāng)你設(shè)置好這些后,應(yīng)該是沒有什么問題了吧。此時(shí)按下F5鍵,在彈出的默認(rèn)瀏覽器內(nèi),你將看到這個(gè)例子的效果了。怎么樣,沒有騙你吧!好了,到此,Applet的編寫與編譯的全部過程你應(yīng)該把握了吧。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 手游| 孝昌县| 丰台区| 波密县| 商水县| 南充市| 贡嘎县| 灵山县| 明光市| 时尚| 连平县| 齐河县| 冀州市| 墨竹工卡县| 措勤县| 盱眙县| 临沧市| 竹北市| 广东省| 株洲县| 晋中市| 临猗县| 肃宁县| 常州市| 三台县| 玉林市| 晋中市| 正宁县| 田东县| 兴安盟| 揭阳市| 德钦县| 沙河市| 白银市| 江口县| 永登县| 梁山县| 青岛市| 土默特左旗| 岳池县| 郑州市|