閱讀590 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java 筆記07

Module  10

Canvas組件:畫布,可以實現動畫操作。

TextArea:文本域。

在單行文本域中回車會激發ActionEvent。

用CheckBoxGroup實現單選框功能。

Java中,單選框和複選框都是使用CheckBox實現。

菜單:new MenuBar(),MenuBar表示菜單條。

菜單中的每一項為MenuItem,一般級聯菜單不應該超過三級。

練習:

設計一個計算器:注意設置一個boolean值(append)來判斷輸入數字是位於第一個數的後麵還是屬於輸入的第二個數。

設置一個變量來存放“+”,點完運算符後,將append設置為false。

String number1

Char  operator 存放運算符。

 

Module  11 Swing

AWT是Java最早出現的圖形界麵,但很快就被Swing所取代。

Swing才是一種真正的圖形開發。

AWT在不同平台所出現的界麵可能有所不同:因為每個OS都有自己的UI組件庫,java調用不同係統的UI。

注意AWT為重量級組件,相當消耗資源,且不同係統的組件可能不同。因為這個問題使得AWT開發的軟件難以作到跨平台。
更為要命的是:不同OS的組件庫都存在BUG。必須多種平台進行測試,並且AWT的組件庫並不豐富。

為解決以上問題,SUN和IBM以及NETSCAPE聯合開發出JAVA基礎類包Swing:注意JAVA的基礎類以Swing為核心。

注意引用:javax.swing.*;javax表示JAVA的擴展。

 

我們在學習JDBC的時候會過度到J2EE。

 

在Swing的組件中,基本上都是在AWT組件的名稱前麵加“J”。

一般情況下,除了Choise等組件:

importjavax.swing.*;好要加上:import java.awt.*以及import java.awt.event.*。

Swing與AWT的最大區別是Swing為JAVA自身的組件。已經不是對等實體,與底層的OS無關。

(JBUILDER就是使用Swing寫的)

 

Swing與AWT在事件模型處理上是一致的。

Jframe實際上是一堆窗體的疊加。

Swing比AWT更加複雜且靈活。

在JDK1.4中,給JFRAME添加Button不可用jf.add(b)。而是使用jf.getContentPane().add(b)。

content是先申請麵板。不過在JDK1.5中可以使用add.。

Jpanel支持雙緩衝技術。

在Jbutton中可以添加圖標。

JscrollPane可以管理比屏幕還要大的組件。

TextArea隻有裝入JscrollPane中才能實現滾動條。

JeditorPane用於顯示瀏覽器。

注意:Tabbed Panel與Border的比較。

進度條:ProgressBar。

JcomboBox:下拉菜單:在AWT中同類組件是choice。

JlistPanel:選擇列表

BorderPanel:設置邊框

JsplitPanel:可將容器分為兩個部分,其中一個部分有Jtree。

TextBox:也是一種新的容器,可以設置組件的間距。

TextFileChoose:文件選擇器。

ColorChoose:顏色選擇器

Module 12  Applet

Applet為Panel的子類

Applet是java的自動執行方式(這是它的優勢,主要用於HTML)。

工作四種語法:init(),start(),stop(),destory()。

Swing中有一個Japplet,如使用Swing組件。

Applet消亡的原因:

①java為安全起見對Applet有所限製:Applet不允許訪問本地文件信息、敏感信息,不能執行本地指令(比如FORMAT),不能訪問初原服務器之外的其他服務器。

①  IE不支持新版本的Applet。

Applet的優勢:

網絡傳輸,自動下載。

Application的優勢:沒有執行限製。

WebStart:可在網絡傳輸,並且在本地無限製。因此前景光明。

 

練習:

使用Swing實現一個界麵,分為上下兩個部分,南邊為JtextField組件,可編輯,上麵為JtextArea組件,不可編輯,在JtextField組件輸入字符,按回車,就可以將內容輸入到JtextArea組件。(AREA區域可以滾動)

>Object�Xa>�o����b>。它是JAVA體係中所有類的父類(直接父類或者間接父類)。

 

此類中的方法可以使所的類均繼承。

 

以下介紹的三種方法屬於Object:

(1)  finalize方法:當一個對象被垃圾回收的時候調用的方法。

(2)  toString():是利用字符串來表示對象。

當我們直接打印定義的對象的時候,隱含的是打印toString()的返回值。

可以通過子類作為一個toString()來覆蓋父類的toString()。

以取得我們想得到的表現形式,即當我們想利用一個自定義的方式描述對象的時候,我們應該覆蓋toString()。

(3)equal

首先試比較下例:

String A=newString(“hello”);

String A=newString(“hello”);

A==B(此時程序返回為FALSE)

因為此時AB中存的是地址,因為創建了新的對象,所以存放的是不同的地址。

 

附加知識:

字符串類為JAVA中的特殊類,String中為final類,一個字符串的值不可重複。因此在JAVA VM(虛擬機)中有一個字符串池,專門用來存儲字符串。如果遇到String a=”hello”時(注意沒有NEW,不是創建新串),係統在字符串池中尋找是否有”hello”,此時字符串池中沒有”hello”,那麼係統將此字符串存到字符串池中,然後將”hello”在字符串池中的地址返回a。如果係統再遇到String b=”hello”,此時係統可以在字符串池中找到 “hello”。則會把地址返回b,此時a與b為相同。

 

 

Stringa=”hello”;

System.out.println(a==”hello”);

係統的返回值為true。

 

故如果要比較兩個字符串是否相同(而不是他們的地址是否相同)。可以對a調用equal:

System.out.println(a.equal(b));

equal用來比較兩個對象中字符串的順序。

a.equal(b)是a與b的值的比較。

 

 

注意下麵程序:

student a=new student(“LUCY”,20);

student b=new student(“LUCY”,20);

System.out.println(a==b);

System.out.println(a.equal(b));

此時返回的結果均為false。

 

以下為定義equal(加上這個定義,返回ture或false)

public booleanequals(Object o){

  student s=(student)o;

  if(s.name.equals(this.name)&&s.age==this.age)

else returnfalse;

}如果equals()返回的值為

 

以下為實現標準equals的流程:

public booleanequals(Object o){

  if (this==o) return trun;  //此時兩者相同
  if (o==null) return false;

  if (! o instanceof strudent) returnfalse;  //不同類

  studeng s=(student)o; //強製轉換

  if(s.name.equals(this.name)&&s.age==this.age) return true;

else returnfalse;

}

 

以上過程為實現equals的標準過程。

 

 練習:建立一個employee類,有String name,int id,doublesalary.運用getset方法,使用toString,使用equals

 

封裝類:

JAVA為每一個簡單數據類型提供了一個封裝類,使每個簡單數據類型可以被Object來裝載。

除了int和char,其餘類型首字母大寫即成封裝類。

轉換字符的方式:

int I=10;

String s=I+” ”;

Strings1=String.valueOf(i);

 

Int I=10;

IntergerI_class=new integer(I);

 

看javadoc的幫助文檔。

附加內容:

“==”在任何時候都是比較地址,這種比較永遠不會被覆蓋。

 

程序員自己編寫的類和JDK類是一種合作關係。(因為多態的存在,可能存在我們調用JDK類的情況,也可能存在JDK自動調用我們的類的情況。)

注意:類型轉換中double\interger\string之間的轉換最多。

最後更新:2017-04-02 16:47:44

  上一篇:go Spring中的AOP詳解
  下一篇:go 《北京法源寺》