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.運用get和set方法,使用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