Lap Trinh Java Coban
Transcript of Lap Trinh Java Coban
-
8/13/2019 Lap Trinh Java Coban
1/441
1
Lp trnh Java cbn
Cao c Thng - Trn Minh [email protected], [email protected]
-
8/13/2019 Lap Trinh Java Coban
2/441
2
Bi 1. Tng quan lp trnh Java
Gii thiu ngn ngJava
Kin trc ca Java Ni dung mt chng trnh Java c bn Cc kiu d liu c bn & ton t Cc cu trciu khin Nhp d liu tbn phm
Cng c son tho Bi tp
-
8/13/2019 Lap Trinh Java Coban
3/441
3
Gii thiu ngn ngJava
Lch spht trin ca Java
Ra i ti Sun Microsystems bi James Gosling 1991: Version u tin vi tn Oak 1995: Tn chnh thc l Java
Mcch ca Java Dng pht trin ng dng cho cc thit bin tthng minh
To cc trang web c ni dung ng (web applet) Hin nay, Java c sdng pht trin nhiu
loing dng khc nhau: cs d liu, mng,Internet, vin thng...
-
8/13/2019 Lap Trinh Java Coban
4/441
4
Gii thiu ngn ngJava
cim ca Java
n gin Hngi tnga nhim
An ton Garbage Collection My o (bin dch v thng dch)
Kh chuyn (Portability) Phn tn
-
8/13/2019 Lap Trinh Java Coban
5/441
5
Kin trc ca Java
Java Platform Java Virtual Machine (Java VM) Java Application Programming Interface (Java API)
Hardware-Platform
Java VM
Java API
myProgram.java
Java Platform
M ngun
-
8/13/2019 Lap Trinh Java Coban
6/441
6
Kin trc ca Java
Java Development Kit JDK
B cng c pht trin Java (jdk) gmtrnh bin dch, thng dch, tr gip, sonti liu v cc thvin chun
Ngoi ra cn mt sthvin khc nhJSP, JavaMail, Java TAPI
1995: Version JDK 1.0 1998: Version JDK 1.2 (Java 2ndPlatform) 2004: Version JDK 1.5
-
8/13/2019 Lap Trinh Java Coban
7/441
7
Pht trin ng dng Java
Hai loing dng Java
Application: ng dng c lp Applet: ng dng chy trn Web
Thvin lp Java
B JDK bao gm rt nhiu lp chun c xy dng sn. Lp trnh vin thng sdng cc lp
chun pht trin ng dng.
-
8/13/2019 Lap Trinh Java Coban
8/441
8
Pht trin ng dng Java
Cc bc pht trin
`
public class Hello {
public static
}
Hello.java
Bin dch
Thng dch
-----------------------
------------------
------------------------
Hello.class
(bytecode)
javac Hello.java
java Hello01001011
-
8/13/2019 Lap Trinh Java Coban
9/441
9
Mt chng trnh Java c bn
1 // Tn file : Hello.java2 /* Tc gi : Cao c Thng*/3
4 public class Hello
5 {
6 // Phng thc main, im btu ca chng trnh7 public static void main( String args[ ] )
8 {
9 System.out.println( Hello World" );10
11 } // Kt thc phng thc main12
13 } // Kt thc lp Hello
Du hiu ch thch =>Lm cho chng trnh dhiu hn. Trnh bin dch sb qua nhng dng c du
ch thch
Khai bo lp
Mi CT phi c t nhtmt khai bo lp
Tn lp cha hm main phiging tn file
im btu v kt thc ca lp
Phng thc main() s c giutin. Mi CT thc thi phi c mtphng thc main()Hin th dy k t ra mn hnh
Cc cu lnh phi kt thc bng du chm phy
-
8/13/2019 Lap Trinh Java Coban
10/441
10
Mt chng trnh Java c bn
Bin dch chng trnh
Vo ch Console ca Windows G cu lnhj a v a c H e l l o . j a v a Nu khng c thng bo li, file Hello.class
s c to ra Thc thi chng trnh G cu lnhj a v a H e l l o(khng cn .class)
-
8/13/2019 Lap Trinh Java Coban
11/441
11
Mt chng trnh Java c bn
Thayi cch hin th
public class Hello{
public static void main(String args[])
{
System.out.print( Chao\tmung\nban\nden\tvoi\nlap trinh Java\n" );}
}
Chao mung
banden voi
lap trinh Java
-
8/13/2019 Lap Trinh Java Coban
12/441
12
Cc kiu d liu c bn
Java c hai kiu d liu
D liu gc chun: L cc kiu d liucnh ngha trong ngn ngnhsnguyn, sthc, k t, logic
D liu dn xut: Do ngi dng t nhngha nhmng, lp, giao tip
V d khai bo bin
int x; Person ps;
-
8/13/2019 Lap Trinh Java Coban
13/441
13
Cc kiu d liu c bn
Kiu snguyn
Kiu sthc
-264264 164 bitslong
-232232 132 bitsint
-327683276716 bitsshort
-2562558 bitsbyte
Khong gi trKch thcKiu
-1.7e3081.7e30864 bitsdouble
-3.4e383.4e3832 bitsfloatKhong gi trKch thcKiu
-
8/13/2019 Lap Trinh Java Coban
14/441
14
Cc kiu d liu c bn
Kiu boolean: Nhn gi tr true hoc false Kiu char: Kiu k ttheo chun Unicode
Mt shng k t
Nhyn\
Du enter\r
Xung hng\n
Tab ngang\tK tUnicode\uxxxx
nghaHng
-
8/13/2019 Lap Trinh Java Coban
15/441
15
Cc kiu d liu c bn
Kiu mng Khai bo: int[] iarray; hoc int iarray[]; Cp pht: iarray = new int[100]; Khi to:
int[] iarray = {1, 2, 3, 5, 6};char[] carray = {a, b, c};
Ch : Lun khi to hoc cp pht mng trc khisdng
Mt skhai bo khng hp l:int[5] iarray;int iarray[5];
-
8/13/2019 Lap Trinh Java Coban
16/441
16
Cc kiu d liu c bn
Kiu mng Truy cp mng
iarray[3] = 0;carray[1] = z;Ch : Chsca mng c tnh t0
Ly sphn tmng: iarray.length
-
8/13/2019 Lap Trinh Java Coban
17/441
17
Cc kiu d liu c bn
Quy tct tn bin
Btu bng mt chci, mt du gchdi (_) hoc mt du dollard ($) Khng c khong trng gia tn
Sau k t u c th dng k t, s, dudollard, du gch di Khng trng vi cc tkho V d: a_1234_d, 1awas, _asdc, a sas,
$erd, %ats Ch : Java phn bit chhoa ch thng
-
8/13/2019 Lap Trinh Java Coban
18/441
18
Cc ton t
>>>=>>=>>>
-
8/13/2019 Lap Trinh Java Coban
19/441
-
8/13/2019 Lap Trinh Java Coban
20/441
20
Cc cu trciu khin
Lnh switch
import javax.swing.JOptionPane;public class TestSwitch{
public static void main(String[] args){
char c;String str=JOptionPane.showInputDialog(null,"Nhap vao ky tu?");c = str.charAt(0);
-
8/13/2019 Lap Trinh Java Coban
21/441
21
Cc cu trciu khin
Lnh switch
switch(c){case 'a': case 'e': case 'i': case 'o': case 'u':
System.out.println("Ky tu nay la nguyen am");break;
default:System.out.println("Ky tu nay la phu am");
}System.exit(0); // kt thc chng trnh
}}
-
8/13/2019 Lap Trinh Java Coban
22/441
22
Cc cu trciu khin
Vng lp for
for(; ; );
// Chng trnh tnh tng cc s l t1 n 100public class TestFor
{public static void main(String[] args){
int tong = 0;
for(int i=1; i
-
8/13/2019 Lap Trinh Java Coban
23/441
23
Cc cu trciu khin
Vng lp while while ()
;
// Tnh tng cc s l t1 n 100int tong = 0, i = 1;
while (i
-
8/13/2019 Lap Trinh Java Coban
24/441
-
8/13/2019 Lap Trinh Java Coban
25/441
25
Nhp d liu tbn phm
V d nhp mt snguyn v mt sthc
import java.io.*;public class TestInput{
public static void main(String[] args) throws Exception{
BufferedReader inStream =new BufferedReader(new InputStreamReader(System.in));
System.out.print("Nhap mot so nguyen:");
String siNumber = inStream.readLine();int iNumber = Integer.parseInt(siNumber);
-
8/13/2019 Lap Trinh Java Coban
26/441
26
Nhp d liu tbn phm
System.out.print("Nhap mot so thuc:");
String sfNumber = inStream.readLine();float fNumber = Float.parseFloat(sfNumber);
System.out.println("So nguyen: + iNumber);
System.out.println("So thuc: + fNumber);}}
-
8/13/2019 Lap Trinh Java Coban
27/441
-
8/13/2019 Lap Trinh Java Coban
28/441
28
V d vi tng Circle
Cch 2: Sdng mt file vi 2 lp ring bit public class TestCircle { public static void main(String[] args) { Circle c = new Circle(5); System.out.println("Area = " + c.getArea()); System.out.println("Circumference = " + c.getCircum()); } }
class Circle { ... }
-
8/13/2019 Lap Trinh Java Coban
29/441
29
V d vi tng Circle
Cch 3: Sdng hai file ring bit // file TestCircle.java public class TestCircle
{ public static void main(String[] args) { ... } }
// file Circle.java class Circle { ... }
-
8/13/2019 Lap Trinh Java Coban
30/441
30
Cng c son tho
Notepad
Jbuilder Eclipse EditPlus
JCreator
-
8/13/2019 Lap Trinh Java Coban
31/441
31
Ch dn thc hnh
t bin mi trng PATH: Trong Windows: Nhy phi trn My
Computer, chn Properties, chnAdvanced, chn Enviroment Variables,chn bin PATH v edit, thm vo ng
dn ti thmc bin ca b JDK. Trong ch Console: G lnh
set Path=%Path%;ng dn ti bin
Nn tham kho java/docs khi lm vic
-
8/13/2019 Lap Trinh Java Coban
32/441
32
Bi tp
1. Vit chng trnh tnh tinin thoi: Tin thu bao hng thng l 27000. Tpht gi thnht n pht th200 gi
cc l 120 /pht. Tpht gi th201 n pht th400 gi
cc l 80 /pht. Tpht gi 401 n pht cui gi cc l
40 /pht.
-
8/13/2019 Lap Trinh Java Coban
33/441
33
Bi tp
2. Vit chng trnh gii phng trnh bc haiax2 + bx + c = 0 vi a,b,c nhp tbn
phm.3. Vit chng trnh nhp vo mt dy cc s
nguyn khc 0, kt thc nhp khi gp s0.
Sau tnh trung bnh cng ca dy s.Tm s ln nht, snh nht ca dy s.4. Vit chng trnh tnh tng
E = 1 + 1/1 + 1/2 + 1/3 + + 1/nvi n nhp vo tbn phm
-
8/13/2019 Lap Trinh Java Coban
34/441
34
Bi tp
5. M rng lp Circle : thm d liu to tmhnh trn v phng thc kim tra mt im
cho trc c nm trong hnh trn hay khng.6. Vit chng trnh nhp vo mt hnh trn,
sau pht sinh 100 im ngu nhin v
cho bit c bao nhiu im nm trong hnhtrn va nhp.
-
8/13/2019 Lap Trinh Java Coban
35/441
1
Lp trnh Java cbn
Cao c Thng - Trn Minh [email protected], [email protected]
-
8/13/2019 Lap Trinh Java Coban
36/441
2
Bi 2. OOP trong Java
Cc phng php lp trnh Gii thiu v OOP Ktha (Inheritance)a hnh (Polymorphism)
Giao tip (Interface) Lp tru tng (Abstract) Gi (Packages)
Java vs C++ Bi tp
-
8/13/2019 Lap Trinh Java Coban
37/441
3
Cc phng php lp trnh
Step-by-Step Programming Lp trnh tng bc Machine Language, Assembly Language
1101011100111101101000011101110101101110110010101000100100101011...
MOV BX, CSSUB BX, 10hJNE label1LOOP label2...
-
8/13/2019 Lap Trinh Java Coban
38/441
4
Cc phng php lp trnh
Procedural Programming Thit ktop-down.
Chng trnh c chiathnh cc hm, th tc.
Pascal, C
Hn ch: dng d liuton cc, kh pht trin,kh m t cc thc th
trong thc t
Program
Proc3
Proc1
Proc2
-
8/13/2019 Lap Trinh Java Coban
39/441
5
Cc phng php lp trnh
Object-OrientedProgramming Chng trnh bao gm
cc i tng. Cc itng tng tc vi
nhau thng qua ccphng thc ca chng D m t cc thc th
D pht trin, m rngchng trnh
Object A
Object CObject B
Object D
-
8/13/2019 Lap Trinh Java Coban
40/441
6
Lp trnh hng i tng-OOP
Lp v i tng D liu v cc thao tc trn d liu c kt
hp trong cng mt i tng (object) Lp (class) nh ngha cc tnh cht ca mt
tp hp cc i tng cng kiu
i tng l cc th hin (instances) ca lpc im ca OOP
Tnh ng gi (Encapsulation) Tnh ktha (Inheritance) Tnh a hnh (Polymorphism)
-
8/13/2019 Lap Trinh Java Coban
41/441
7
V d v OOP trong Java
Lp Time v TimeTest nm trong cng thmc Lp Time nm trong file Time.java. N cha
cc nh ngha v thi gian. Lp TimeTest nm trong file TimeTest.java.
N dng kim tra lp Time. Lp TimeTest
cha hm main. Khi chy ch cn g:
javac TimeTest.java
java TimeTest Java s tng tm v dch file Time.java
-
8/13/2019 Lap Trinh Java Coban
42/441
8
// File Time.javaimportjava.text.DecimalFormat;public class Time{
private int hour; // 0 - 23private int minute; // 0 - 59private int second; // 0 - 59
// Cau tu
public Time() { setTime( 0, 0, 0 ); }// Ham thiet lap du lieupublic void setTime( int h, int m, int s ){
hour = ( ( h >= 0 && h < 24 ) ? h : 0 );minute = ( ( m >= 0 && m < 60 ) ? m : 0 );second = ( ( s >= 0 && s < 60 ) ? s : 0 );
}
Lp Time
-
8/13/2019 Lap Trinh Java Coban
43/441
9
// Chuyen sang khuon dang thoi gian quoc tepublic String toUniversalString(){
DecimalFormat twoDigits = new DecimalFormat( "00" );return twoDigits.format( hour ) + ":" +
twoDigits.format( minute ) + ":" + twoDigits.format( second );}
// Chuyen sang khuon dang thoi gian thong thuongpublic String toStandardString(){
DecimalFormat twoDigits = new DecimalFormat( "00" );
return ( (hour == 12 || hour == 0) ? 12 : hour % 12 ) + ":"+ twoDigits.format( minute ) + ":" + twoDigits.format( second )+ ( hour < 12 ? " AM" : " PM" );
}
}// Ket thuc lop Time
Lp Time
-
8/13/2019 Lap Trinh Java Coban
44/441
10
Lp Time
D liu Mi d liu phi c mt phm vi nht nh
Phng thc Cu tc tn trng vi tn lp
Cu tkhng c kiu tr v C th c nhiu cu t(overloading) Mi phng thc phi c mt phm vi
nht nh
-
8/13/2019 Lap Trinh Java Coban
45/441
11
// File TimeTest.javaimportjavax.swing.JOptionPane;public class TimeTest{
public static void main( String args[ ] ){Time time = new Time(); // Tao mot doi tuong kieu Time
// Lay thoi gianString output = "The initial universal time is: "
+ time.toUniversalString()+ "\nThe initial standard time is: + time.toStandardString();
// Dat lai thoi gian
time.setTime( 13, 27, 6 );output += "\n\nUniversal time after setTime is: "+ time.toUniversalString()+ "\nStandard time after setTime is: "+ time.toStandardString();
Lp TimeTest
-
8/13/2019 Lap Trinh Java Coban
46/441
12
// Dat lai thoi giantime.setTime( 99, 99, 99 );
output += "\n\nAfter attempting invalid settings: "+ "\nUniversal time: " + time.toUniversalString()+ "\nStandard time: " + time.toStandardString();
JOptionPane.showMessageDialog( null, output,"Testing Class Time1", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );}// Ket thuc ham main
}// Ket thuc lop TimeTest
Lp TimeTest
Ch Ti T t
-
8/13/2019 Lap Trinh Java Coban
47/441
13
javac TimeTest.java java TimeTest
Chy TimeTest
Ph i t
-
8/13/2019 Lap Trinh Java Coban
48/441
14
Phm vi truy cp
private Ch truy cp c ttrong lp khai bo.
protected Truy cp c ttrong lp khai bo, lp
con ca ca lp khai bo v cc lp cng
gi vi lp khai bo. public Truy cp c tmi ni.
Mc nh Truy cp c ttrong lp khai bo vcc lp cng gi vi lp khai bo.
T kh thi
-
8/13/2019 Lap Trinh Java Coban
49/441
15
Tkho this
Tkho this chi tng hin thipublic class Time
{private int hour; // 0 - 23private int minute; // 0 - 59private int second; // 0 - 59
// Viet lai ham setTimepublic void setTime( int hour, int minute, int second ){
this.hour = ( ( hour >= 0 && hour < 24 ) ? hour : 0 );
this.minute = ( ( minute >= 0 && minute < 60 ) ? minute : 0 );this.second = ( ( second >= 0 && second < 60 ) ? second : 0 );
}
N h h khi t
-
8/13/2019 Lap Trinh Java Coban
50/441
16
// Ham khoi tao khong tham sopublic Time() { this( 0, 0, 0 ); }
// Ham khoi tao mot tham sopublic Time( int h ) { this( h, 0, 0 ); }
// Ham khoi tao hai tham sopublic Time( int h, int m ) { this( h, m, 0 ); }// Ham khoi tao ba tham sopublic Time( int h, int m, int s ) { setTime( h, m, s ); }
// Ham sao chep
public Time( Time time ){ this( time.hour, time.minute, time.second ); }// Su dung cac cau tuTime t1 = new Time(); // 00:00:00Time t2 = new Time( 2 ); // 02:00:00
Time t3 = new Time( 21, 34 ); // 21:34:00Time t4 = new Time( 12, 25, 42 ); // 12:25:42Time t5 = new Time( 27, 74, 99 ); // 00:00:00Time t6 = new Time( t4 ); // 12:25:42
Np chng hm khi to
Mt s t kho
-
8/13/2019 Lap Trinh Java Coban
51/441
17
Mt stkho
Tkho final p dng cho lp, phng thc, bin.
Lp final: l lp khng th c lp conpublic final class NoChild {...}
Bin final: l bin khng th thayi khi
gn gi trprivate final int MAX = 100; Phng thc final: l phng thc khng
th np chngpublic final void NoOverride();
Mt s t kho
-
8/13/2019 Lap Trinh Java Coban
52/441
18
Mt stkho
Tkho staticc dng vi phng thc v bin.
Bin static: l bin chung cho miitng ca lp, n c truy cp qua itng ca lp hoc qua tn lp.
private static char TAB = \t; Phng thc static: l phng thc chc php truy cp ti cc bin static ca
lp, n c th gi ngay c khi cha citng no ca lp. public static void Welcome() {...}
K tha (Inheritance)
-
8/13/2019 Lap Trinh Java Coban
53/441
19
Ktha (Inheritance)
Ktha l vic xy dng lp mi da trnlp c sn
Lp c sn l lp cha: superclass Lp mi l lp con: subclass
V d: Hnh vung ktha thnh chnht
Con ch ktha t loi ng vt di nc Ch :
Tnh ktha th hin quan his a, khc viquan hhas a (composition)
Composition: mt i tng cha cc i tngthuc lp khc. V d: t c cc bnh xe
Cy k tha
-
8/13/2019 Lap Trinh Java Coban
54/441
20
Cy ktha
Animal
Cat Horse Chicken
TerrestrialAnimal AquaticAnimal
Fish Octopus
V d v k tha trong Java
-
8/13/2019 Lap Trinh Java Coban
55/441
21
V d v ktha trong Java
Xy dng lp Hnh cu (Sphere) k tha tlp Hnh trn (Circle)
// File Circle.javapublic class Circle{
protected int radius; // radius co the duoc truy cap tu Spherepublic Circle( int radius ){
this.radius = radius;}
public int getRadius() { return radius; }
public double getArea() { return Math.PI*radius*radius; }public double getCircum() { return 2*Math.PI*radius; }
}
V d v k tha trong Java
-
8/13/2019 Lap Trinh Java Coban
56/441
22
V d v ktha trong Java
// File Sphere.javapublic class Sphere extends Circle{
public Sphere( int radius ){
super(radius);// Goi cau tu cua lop cha}
// Ham tinh dien tich bet mat. Nap chong ham getArea()public double getArea(){ return 4*Math.PI*radius*radius; }
// Ham tinh the tich
public double getVolume(){ return (4.0d/3)*Math.PI*radius*radius*radius; }}
Sphere k tha tCircle
V d v k tha trong Java
-
8/13/2019 Lap Trinh Java Coban
57/441
23
V d v ktha trong Java
// File InheritanceTest.javapublic class InheritanceTest{
public static void main(String[] args){
Circle circle = new Circle(5);Sphere sphere = new Sphere(2);
System.out.println(Radius of circle: " + circle.getRadius());System.out.println("Radius of sphere: " + sphere.getRadius());System.out.println("Area of circle: " + circle.getArea());System.out.println(Area of sphere: " + sphere.getArea());
System.out.println("Volume of sphere: " + sphere.getVolume());}
}
T kho super
-
8/13/2019 Lap Trinh Java Coban
58/441
24
Tkho super
Tkho super chi tng ca lp cha super(radius): Gi cu tca lp cha
Question: Thm phng thc tnh din tchmt ct qua tm hnh cu ?
Answer: chnh l din tch hnh trn// Them phuong thuc nay trong lop Spherepublic double getAreaCut() { return super.getArea(); }
// ...
// Ham main, goi Tinh dien tich mat catSystem.out.println(Area cut of sphere: " + sphere.getAreaCut());// ...
a hnh (Polymorphism)
-
8/13/2019 Lap Trinh Java Coban
59/441
25
a hnh (Polymorphism)
V d:class A{
public void method(){ System.out.println(method of A); }}
class B extends A
{ public void method(){ System.out.println(method of B); }
}
class C extends A{public void method()
{ System.out.println(method of C); }}
// Cu lnh trong mainA a = new A();
a.method();
a = new B();a.method();
C c = new C();a = c;a.method();
// Kt qu mn hnh
method of Amethod of Bmethod of C
a hnh (Polymorphism)
-
8/13/2019 Lap Trinh Java Coban
60/441
26
a hnh (Polymorphism)
Tnh a hnh th hin qua vic: cng mtphng thc nhng c ni dung thc hin
khc nhau trn cc i tng khc nhau. Phng thc gi c xc nh thng quai tng c tham chiu, khng thng
qua kiu khai bo ca tham chiu. Trong Java, cc phng thc lun mang
tnh a hnh.
Lp tru tng (abstract)
-
8/13/2019 Lap Trinh Java Coban
61/441
27
Lp tru tng (abstract)
Lp tru tng chc dng lm lp cha chocc lp khc, n khng c cc th hin
(instance). Lp tru tng nh ngha cc thuc tnh chungcho cc lp con ca n.
V d c th thit k lp Hnh trn, Hnhvung... ktha t lp tru tng Hnh. LpHnh c thuc tnh l tn hnh, cc phng thctnh din tch, chu vi...
Lp tru tng
-
8/13/2019 Lap Trinh Java Coban
62/441
28
Lp tru tng
Lp tru tng (abstract) thng c t nht mtphng thc tru tng, l phng thc khng cci t.public abstract void draw();
Khai bo lp tru tngpublic abstract class ClassName {}
Cc lp con ca mt lp cha tru tng phi cit tt c cc phng thc tru tng. Nu khngn cng s tr thnh lp tru tng.
Khng th to cc i tng ca mt lp tru
tng nhng c th khai bo bin thuc kiu lptru tng tham chiu n cc i tng thuclp con ca n.
Lp tru tng
-
8/13/2019 Lap Trinh Java Coban
63/441
29
Lp tru tngpublic abstract class Shape{
static final double PI = 3.14159;public abstract double getArea();
public abstract double getVolume();}class Circle extends Shape{
double radius;
public double getArea() { return PI*radius*radius; }public double getVolume() { return 0; }
}class Cube extends Shape{
double a, b, c;public double getArea() { return 2*(a*b+b*c+c*a); }public double getVolume() { return a*b*c; }
}
Giao tip (interface)
-
8/13/2019 Lap Trinh Java Coban
64/441
30
Giao tip (interface)
Giao din ch ra cc tnh cht m mt itng c th c, trong mt ngcnh no .
Mt ngi c th khi nh l mt ngi con, trng l mt sinh vin, lp l mt ngi bn.
Giao din trong Java c thc dng th
hin sa ktha nhtrong C++.
Giao tip (interface)
-
8/13/2019 Lap Trinh Java Coban
65/441
31
p ( )
Khai bo giao tipinterface Name {...}
Mt giao tip thng ch cha cc hng static vcc phng thc public cha ci t.
Mt giao tip c th tha kmt giao tip khc.
Mt lp c th ci t (implements) mt haynhiu giao tip nhng ch c th tha k(extends) tmt lp.
Giao tip (interface)
-
8/13/2019 Lap Trinh Java Coban
66/441
32
p ( )
interface Drawable{
public void draw();}
public abstract class Shape {...}
public class Circle extends Shape implements Drawable{...public void draw() {...}
}
-
8/13/2019 Lap Trinh Java Coban
67/441
Gi (package)
-
8/13/2019 Lap Trinh Java Coban
68/441
34
(p g ) Sdng package cch 1: Khai bo import
V d 1: import Transport.Car; V d 2: import Transport.*;
V d 3: importjava.awt.Point; Point p = new Point(1,2);
Sdng package cch 2: Sdng trc tip
java.awt.Point p = newjava.awt.Point(1,2); javax.swing.JOptionPane.showMessageDialog(...);
Ch : Ch c th truy cp c n cc lp public trong
cc package Package java.lang.* c tng import vo mi
chng trnh
Java vs C++
-
8/13/2019 Lap Trinh Java Coban
69/441
35
1. Mt chng trnh Java chy chm hn so vi mtchng trnh C tng ng khong 20 ln.
2. Java khng c kiu lit k (enum), kiu cu trc
(struct) hay hp (union), n ch c class. Mi binhay hm ca Java u nm trong mt class no .
3. Java khng c ton tphm vi (scope) ::
4. C ca cc kiu d liu nguyn thu (primitive) trongJava khng ph thuc vo my. c bit kiu char cc 16 bit (Unicode).
5. Biu thc logic trong Java ch nhn gi tr boolean.
6. Trong Java, mi bin khng thuc kiu nguyn thuu phi to ra bng tkho new.7. Java khng c tin x l (preprocessor)
Java vs C++
-
8/13/2019 Lap Trinh Java Coban
70/441
36
8. Java khng c con tr.9. Java khng c hu t(destructor), n ch c phng
thc finalize() c gi bi Garbage Collector.10. Java khng h tri smc nh.11. Java ch h tr ktha n, tt c mi lp u mc
nh ktha t lp Object.
12. Java khng c template.13. Java khng c tkho virtual. Tt c mi phng
thc non-static u lun dng dynamic binding.14. Java khng c qu ti ton t(operator overloading).15. i sca hm lun c xl nhi sgi tr
(value argument)
Bi tp
-
8/13/2019 Lap Trinh Java Coban
71/441
37
1. Ci t li cc ni dung l thuyt hc.
2. Xy dng lp Candidate (Th sinh) gm cc
thuc tnh: m, tn, ngy thng nm sinh,im thi Ton, Vn, Anh v cc phngthc cn thit.
3. Xy dng lp TestCandidate kim tralp trn: Nhp vo 10 th sinh In ra thng tin v cc th sinh c tngim ln
hn 15
Bi tp
-
8/13/2019 Lap Trinh Java Coban
72/441
38
4. Xy dng lp Point c d liu l 2 tox,y v cc phng thc cn thit. Thm
phng thc toString tr v mt Stringc dng [x, y].5. Xy dng lp Rect c d liu l im trn
tri v di phi. Qu ti cc cu tcung cp nhiu cch khi to. Thm ccphng thc: Kim tra 1 im c nmtrong hnh chnht hay khng. Tnh giao
ca 2 hnh chnht.
Bi tp
-
8/13/2019 Lap Trinh Java Coban
73/441
39
6. Xy dng lp TestRect: Sinh ngu nhin 10hnh chnht v tnh giao i mt ca
chng.7. Xy dng lp Triangular c 3 phng thcstatic tnh din tch tam gic theo 3cch khc nhau: cnh y v chiu cao,cng thc Heron, di 2 cnh v gc.
Bi tp
-
8/13/2019 Lap Trinh Java Coban
74/441
40
8. Xy dng lp Employee c name vphng thc tru tng l earnings(). Xy
dng lp Boss ktha tEmployee ccch tnh lng l mt khon cnh hngthng. Xy dng lp PieceWorker c cchtnh lng da trn ssn phm lm c,lng mt sn phm l $ 0.5. Xy dnglp CommissionWorker c cch tnh lngl mt khon cnh + tin hoa hng trn
ssn phm bn c, mi sn phmc $ 0.1 hoa hng.
Bi tp
-
8/13/2019 Lap Trinh Java Coban
75/441
41
9. Xy dng lp tru tng Animal c d liul name v weight, phng thc o l grow
(tng trng lng).10.Xy dng lp Chicken k tha tAnimal,ci t phng thc o mi ln grow thtrng lng tng 0.3 kg. Xy dng lpSparrow ktha tAnimal, mi ln tngtrng lng 0.05 kg.
11.Xy dng giao din Flyable c phng thc
fly(). Ci t giao din ny trong lpSparrow.
-
8/13/2019 Lap Trinh Java Coban
76/441
Lp trnh Java cbn
1
Cao c Thng - Trn Minh [email protected], [email protected]
Bi 3. Lp trnh GUI (Applet)
mailto:[email protected]:[email protected]:[email protected]:[email protected] -
8/13/2019 Lap Trinh Java Coban
77/441
2
Gii thiu cc loi ng dng Thvin AWT
To cc appleti tng hoGraphics
Kthut khung hnh ph Bi tp
Hai loing dng Java
-
8/13/2019 Lap Trinh Java Coban
78/441
3
Applet Chng trnh Java chy trong mt trang
web nh vo trnh duyt h tr Java. Stand-alone Application
Giao din dng lnh (console): Tng tcvi ngi dng thng qua cc dng k t.
Giao din ho (GUI): Tng tc vingi dng bng nhiu cch khc nhaunhhnhnh, nt nhn, biu tng Vicx lng dng da trn cc skin.
Thvin AWT
-
8/13/2019 Lap Trinh Java Coban
79/441
4
AWT (Abstract Windowing Toolkit) L b thvin dng xy dng ccng
dng giao din ho (GUI) Cc thnh phn giao din ho nmtrong gijava.awt
Cc thnh phn ca AWT
-
8/13/2019 Lap Trinh Java Coban
80/441
5
Component
Button TextComponent Container MenuComponent
TextField TextArea Panel Window
Applet Frame Dialog
Menu MenuBar MenuItem
...
Cc thnh phn ca AWT
-
8/13/2019 Lap Trinh Java Coban
81/441
6
Cc thnh phn container: dngchav qun l cc thnh phn khc Applet
Frame Dialog
Cc thnh phn khc: nm trong cc thnh
phn containerNt nhn (Button) Thcn (Menu)
vn bn (TextField) Nt chn (Radio button)
Nhn (Label) Danh sch (List)Vng vn bn (TextArea) La chn (Choice)
.
Mt sphng thc ca Component
-
8/13/2019 Lap Trinh Java Coban
82/441
7
void setVisible(boolean): hin thhoc n component Dimension getSize(): tr v kch thc ca component void setSize(Dimension): thayi kch thc
void setEnabled(): bt hoc tt component void repaint(): cp nht li component void update(Graphics g): c gi qua repaint()
void paint(Graphics g): c gi qua update() void setBackground(Color): t mu nn ...
Xy dng cc applet
-
8/13/2019 Lap Trinh Java Coban
83/441
8
Lp Applet Java c lpjava.applet.Applet ktha
tlp java.awt.Component cho php tora cc applet trong Web. Mi lp applet do ngi dng to ra u
phi ktha tlp Applet.
Xy dng cc applet
-
8/13/2019 Lap Trinh Java Coban
84/441
9
V d1: To file TestApplet.java
Dch: javac TestApplet.java
importjava.applet.Applet;importjava.awt.Graphics;
public class TestApplet extends Applet{
public void paint( Graphics g)
{g.drawString(Hello world!, 50, 25);
}}
Xy dng cc applet
-
8/13/2019 Lap Trinh Java Coban
85/441
10
Thc thi applet Cch 1: To file TestApplet.html c ni
dung nhsau:
Mfile ny bng trnh duyt WEB Cch 2: Dng cng c appletviewer.
G lnh:appletviewer TestApplet.html
-
8/13/2019 Lap Trinh Java Coban
86/441
11
importjava.applet.Applet;importjava.awt.Graphics;
public class TestApplet extends Applet{
public void init() {}
public void start() {}public void stop() {}public void destroy {}public void paint( Graphics g) {}
}
-
8/13/2019 Lap Trinh Java Coban
87/441
Hotng ca Applet
-
8/13/2019 Lap Trinh Java Coban
88/441
13
Vngi ca mt Applet Np mt applet: appletc khi to v
thc thi Chuyn hoc tr v trang Web: Ccphng thc stop v start s c gi
Np li applet: nhqu trnh np applet Thot khi trnh duyt: phng thc stop
v destroy s c gi
Lp Graphics
-
8/13/2019 Lap Trinh Java Coban
89/441
14
java.awt.Graphics l lp cung cp ccphng thc v ho c bn:
ng thng (Line)ng oval (Oval) Hnh chnht (Rectangle)
a gic (Polygon) Vn bn (Text)
Hnh nh (Image) ...
-
8/13/2019 Lap Trinh Java Coban
90/441
Lp Graphics
-
8/13/2019 Lap Trinh Java Coban
91/441
16
V ng thng public void drawLine(int x1, int y1, int x2, int y2);
V hnh chnht public void drawRect(int x, int y, int width, int height); T mt hnh chnht
public void fillRect(int x, int y, int width, int height); Xo mt vng chnht
public void clearRect(int x, int y, int width, int height);
Va gic public void drawPolygon(int[] x, int[] y, int numPoint); public void drawPolygon(Polygon p);
Lp Graphics
i t j l t A l t
-
8/13/2019 Lap Trinh Java Coban
92/441
17
Demoimportjava.applet.Applet;importjava.awt.Graphics;public class DemoRect extends Applet{
public void init(){System.out.println("Demonstration of some simple figures");
}public void paint(Graphics g){
g.drawLine(70, 300, 400, 250);g.drawRect(100, 50, 130, 170);g.fillRect(120, 70, 70, 70);
int[] x = { 280, 310, 330, 430, 370 };int[] y = { 2p0, 140, 170, 70, 90 };g.drawPolygon(x, y, x.length);
}}
Lp Graphics
-
8/13/2019 Lap Trinh Java Coban
93/441
18
Lp Graphics
V t / li
-
8/13/2019 Lap Trinh Java Coban
94/441
19
V ng trn/elip public void drawOval(int x, int y, int width, int height);
Tng trn/elip public void fillOval(int x, int y, int width, int height);
Vcung trn
public void drawArc(int x, int y, int width, int height,int startAngle, int arcAngle);
Vxu k t
public void drawString(String str, int x, int y); Vnh
public void drawImage(Image img, int x, int y,...);
Lp Graphics
D
import java applet Applet;import java awt Graphics;
-
8/13/2019 Lap Trinh Java Coban
95/441
20
Demoimportjava.applet.Applet;importjava.awt.Graphics;
public class DemoOval extends Applet{
public void init(){
System.out.println("Demonstration of some simple figures");}
public void paint(Graphics g){int xstart = 70, ystart = 40, size = 100;g.drawOval(xstart, ystart, size, size);g.drawOval(xstart + (size*3)/4, ystart, size, size);g.drawOval(xstart + size/2, ystart + size/2, size, size);g.drawArc(xstart, ystart, 300, 200, 0, -90);g.drawString("good morning !", xstart + 265, ystart + 90);
}
}
Lp Graphics
-
8/13/2019 Lap Trinh Java Coban
96/441
21
Lp Graphics
Demo
import java applet Applet;
-
8/13/2019 Lap Trinh Java Coban
97/441
22
Demoimportjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Image;
public class DemoImage extends Applet{public void init(){
System.out.println("Demonstration of imaging");
}public void paint(Graphics g){
Image image = getToolkit().getImage("summer.jpg");
g.drawImage(image, 0, 0, this);}}
Lp Graphics
-
8/13/2019 Lap Trinh Java Coban
98/441
23
Cc lp tin ch khc
Lp Point: biu din im trn mn hnh
-
8/13/2019 Lap Trinh Java Coban
99/441
24
Lp Point: biu dinim trn mn hnh Lp Dimension: biu din kch thc v
chiu rng v chiu cao ca mt i tng Lp Rectangle: biu din hnh chnht Lp Polygon: biu din a gic
Lp Color: biu din mu sc
Cc lp tin ch khc
Demo
import java.applet.Applet;
-
8/13/2019 Lap Trinh Java Coban
100/441
25
Demoimportjava.applet.Applet;importjava.awt.*;
public class DemoColor extends Applet
{ public void paint(Graphics g){
Dimension size = getSize();g.setColor(Color.orange);g.fillRect(0, 0, size.width, size.height);
Color color = new Color(10, 150, 20);g.setColor(color);
g.drawString("I am a colorful string",size.width/2 - 50, size.height/2);
}}
Cc lp tin ch khc
-
8/13/2019 Lap Trinh Java Coban
101/441
26
Xl font v
Dat font
import java.applet.Applet;import java.awt.*;
-
8/13/2019 Lap Trinh Java Coban
102/441
27
Dat fontimportjava.applet.Applet;importjava.awt. ;
public class DemoFont extends Applet{
public void paint(Graphics g){
Font font = new Font("Arial", Font.BOLD, 30);g.setFont(font);
g.drawString("I am font Arial, bold, size 30", 50, 50);}}
Bi tp ti lp
Bi 1: Sinh 100 ng
-
8/13/2019 Lap Trinh Java Coban
103/441
28
Bi 1: Sinh 100 ngthng c tongunhin v mu ngu
nhin
Bi tp ti lp
Bi 2: V s thay i ca mu xanh l cy
-
8/13/2019 Lap Trinh Java Coban
104/441
29
Bi 2: Vsthay i ca mu xanh l cy
-
8/13/2019 Lap Trinh Java Coban
105/441
Kthut khung hnh ph
V d v s di chuyn b nhy
-
8/13/2019 Lap Trinh Java Coban
106/441
31
V dvsdi chuyn bnhy importjava.applet.Applet;importjava.awt.*;
public class DemoMove1 extends Applet{
private int x = 50;private int y = 50;
public void paint(Graphics g){
if(x > 300) x = 50;
g.fillOval(x, y, 100, 100);delay(100);move();
}
-
8/13/2019 Lap Trinh Java Coban
107/441
Kthut khung hnh ph
Gii thch l do nhy:
-
8/13/2019 Lap Trinh Java Coban
108/441
33
Gii thch l do nhy: Mi ln gi repaint() th update() c gi
update() xo ni dung ca sv gi paint() Khc phc: Vhnh vo mt khung hnh phtrong bnh
thay v vtrc tip ra mn hnh. Khi vxong, khung hnh phc hin thra
mn hnh trong phng thc paint().
Np chng update() trnh vic xo ni dungca s.
-
8/13/2019 Lap Trinh Java Coban
109/441
Kthut khung hnh ph
Gii php
-
8/13/2019 Lap Trinh Java Coban
110/441
35
Gii phppublic void paint(Graphics g){
//...offGraphics.clearRect(0, 0, 500, 500);offGraphics.fillOval(x, y, 100, 100);g.drawImage(offImage, 0, 0, this);//...
}
public void update(Graphics g){
paint(g);}//...
}
Applet
Kh nng ca Applet
-
8/13/2019 Lap Trinh Java Coban
111/441
36
Kh nng ca Applet Applet c t ti mt Server trn mng
Applet c chuyn ti my Client theo mttrang HTML no Khi mt trnh duyt (tng thch vi Java)
nhn c trang web ny, n sti m caApplet v thc thi trn my client
Applet
Gii hn ca Applet
-
8/13/2019 Lap Trinh Java Coban
112/441
37
Gii hn ca Applet Khngc np cc thvin hay cc phng
thc sdng m gc (native code). Khngcc v ghi ln cc tp tin ca
myang chy chng. Khngc khing bt k chng trnh
no trn myang chy. Khngcc bt k tnh cht no ca h
thng.
Bi tp
1. Xy dng mt applet v ra mt khunt h h h
-
8/13/2019 Lap Trinh Java Coban
113/441
38
y g pp mt nhhnh v sau:
Bi tp
2. V th hm sy = 3*x*x - 6*x+ 1
-
8/13/2019 Lap Trinh Java Coban
114/441
39
3. V th hm sy = sin(x)
Bi tp
4. Dng kthut khung hnh phvmtqu bng chuyn ng t do trong mt
-
8/13/2019 Lap Trinh Java Coban
115/441
40
qubng chuyn ng tdo trong mtapplet.
5. Mrng bi ton vi 2 qubng.6. Mrng bi ton vi nn applet l mt
hnhnh.7. Mrng bi ton vi qubng l mt hnh
nh v c nhiu qubng chuyn ng
ng thi.
Lp trnh Java c bn
-
8/13/2019 Lap Trinh Java Coban
116/441
Lp trnh Java cbn
1
Cao c Thng - Trn Minh Tun
[email protected], [email protected]
Bi 3. Cc thnh phn GUI
Mt v dn gin
mailto:[email protected]:[email protected]:[email protected]:[email protected] -
8/13/2019 Lap Trinh Java Coban
117/441
2
g M hnh xl skin
Cc thnh phn GUI cbn Skin chut
Skin bn phm Bqun l trnh by (layout)
Bi tp
V d: Applet tnh tng 2 s
// file TinhTong.javaimportjava.applet.Applet;
-
8/13/2019 Lap Trinh Java Coban
118/441
3
p j pp pp ;importjava.awt.*;importjava.awt.event.*;
public class TinhTong extends Applet implements ActionListener{
private TextField txtNum1, txtNum2;private Button button;
// phuong thuc nay duoc goi khi applet khoi taopublic void init(){
txtNum1 = new TextField(8);// tao o nhap so 1txtNum2 = new TextField(8);// tao o nhap so 2button = new Button("Tinh Tong");// tao nut an
V d: Applet tnh tng 2 s
Demo
// dua cac thanh phan vao appletadd(txtNum1);
-
8/13/2019 Lap Trinh Java Coban
119/441
4
add(txtNum2);add(button);
// khoi tao gia tri cho o nhaptxtNum1.setText("0");txtNum2.setText("0");
// dat nghe su kien bam nutbutton.addActionListener(this);
};
// phuong thuc nay duoc goi khi co mot hanh dong xay rapublic void actionPerformed(ActionEvent event){
repaint();}
V d: Applet tnh tng 2 s
Demo
// phuong thuc nay duoc goi khi ve lai cua sopublic void paint(Graphics g)
-
8/13/2019 Lap Trinh Java Coban
120/441
5
{int num1, num2, sum;
String s1 = txtNum1.getText();num1 = Integer.parseInt(s1);String s2 = txtNum2.getText();num2 = Integer.parseInt(s2);sum = num1 + num2;g.drawString("Tong cua hai so la: "+sum, 35, 80);
}}
V d: Applet tnh tng 2 s
Gii thch appletT tFi ld B tt l l th i
-
8/13/2019 Lap Trinh Java Coban
121/441
6
TextField v Button l cc lp thuc gijava.awt
ActionListener v ActionEvent l cc lpthuc gi java.awt.event
TinhTong cn ci t giao din ActionListenerv n strc tip xl skin n ntbutton.addActionListener(this);
C thdng mt lp khc nghe skinthay cho lp TinhTong
-
8/13/2019 Lap Trinh Java Coban
122/441
M hnh x l skin
Ba thnh phn chnh ca m hnhEvent source: ngun gy ra s kin
-
8/13/2019 Lap Trinh Java Coban
123/441
8
Event source: ngun gy ra skin,thng l cc thnh phn GUI trongchng trnh
Event object: i tng lu thng tin v
skin xy ra Event listener: i tng s nhncthng tin khi c skin xy ra
Event source lu mt danh sch cc Eventlistener v sthng bo cho chng bit mi khic skin xy ra
M hnh x l skin
V d: Ngi dngn mt ntT th ti
-
8/13/2019 Lap Trinh Java Coban
124/441
9
To thng tinvskin
EventObjectComponent
Thng bo c skin xy ra
EventListener EventListener
Vic thng bo skin xy ra thc cht l vic gi mt phng
thc ca EventListener vii struyn vo l EventObject.Cc lp con ca EventListener c thcit cc phng thcxl skin.
Mt s lp skin
EventObject (java.util)
-
8/13/2019 Lap Trinh Java Coban
125/441
10
AWTEvent
TextEvent ComponentEvent
InputEvent WindowEvent
KeyEvent MouseEvent
ContainerEvent
ActionEvent
(java.awt)
...
(java.awt.event)
Mt slp skin
Skin cp thp: dng cho hu ht ccthnh phn
-
8/13/2019 Lap Trinh Java Coban
126/441
11
thnh phn FocusEvent: t/chuyn focus InputEvent: skin phm (KeyEvent) hoc
chut (MouseEvent) ContainerEvent: thm hoc xo cc
component WindowEvent: ng, m, di chuyn ca s
...
-
8/13/2019 Lap Trinh Java Coban
127/441
Mt s interface nghe skin
EventListener
-
8/13/2019 Lap Trinh Java Coban
128/441
13
ActionListenerContainerListener
ItemListenerFocusListener
TextListenerKeyListener
MouseListener
WindowListener
Cit qun l skin
Xcnhi tng s gy ra skin (eventsource). V d: nt bm.
-
8/13/2019 Lap Trinh Java Coban
129/441
14
Xc nh skin cn xl trn i tng
gy skin. V d: n nt. Xcnhi tng nghe skin (event
listener) v cit cc phng thc tngng. V d: chnh applet snghe skin.
ng ki tng nghe trni tng gy
ra skin. V d:button.addActionListener(...);
Cc event source v event object
Event source Event Ch thchButton ActionEvent Nhn nt
Ch kb It E t Ch b h t it
-
8/13/2019 Lap Trinh Java Coban
130/441
15
Checkbox ItemEvent Chn, b chn mt item
Choice ItemEvent Chn, b chn mt itemComponent ComponentEvent n, hin, di chuyn
FocusEvent c chn
MouseEvent Tng tc chutKeyEvent Tng tc bn phm
Container ContainerEvent Thm, bt component
List ActionEvent Nhp kp chut mtitem
ItemEvent Chn, b chn mt item
Cc event source v event object
Event source Skin Ch thch
-
8/13/2019 Lap Trinh Java Coban
131/441
16
MenuItem ActionEvent Chn mt menu item
Scrollbar AdjustmentEvent Di chuyn thanh cunTextComponent TextEvent Thayi vn bn
TextField ActionEvent Kt thc thayi vn
bnWindow WindowEvent Thayi ca s
Bng tham khoi tng nghe v phngthc cn cit
Event Class ListenerInterface
Listener Methods
ActionEvent ActionListener actionPerformed()
-
8/13/2019 Lap Trinh Java Coban
132/441
17
()
AdjustmentEvent AdjustmentListener adjustmentValueChanged()
ComponentEvent ComponentListener componentHidden()componentMoved()
componentResized()
componentShown()ContainerEvent ContainerListener componentAdded()
componentRemoved()
FocusEvent FocusListener focusGained()focusLost()
ItemEvent ItemListener itemStateChanged()
-
8/13/2019 Lap Trinh Java Coban
133/441
ng ki tng nghe
ng ki tng nghe ta sdngtn phng thc c cu trc nhsau:
-
8/13/2019 Lap Trinh Java Coban
134/441
19
p g
add + loi skin + Listener(lp nghe skin) V d vi nt Button
addActionListener(ActionListener)
V d vi danh sch List addActionListener(ActionListener) addItemListener(ItemListener)
Mt sthnh phn GUI
EventTextComponent
Checkbox
TextField
-
8/13/2019 Lap Trinh Java Coban
135/441
20
Object Component
CheckboxGroup
Checkbox
Container
Label
Button
List
Choice
Panel Applet
Nhn (Label)
Nhn c dng trnh by mtchui vn bn ra mn hnh
-
8/13/2019 Lap Trinh Java Coban
136/441
21
Mt sphng thc ca Label: public Label(); // to nhn public Label(String s); // to nhn vi ni dung s
public Label(String s, int align); // to v canh l void setText(String s); // t ni dung nhn void setAlignment(int align); // canh lnhn
...
Nhn (Label)importjava.applet.Applet;
importjava.awt.*;public class DemoLabel extends Applet{
-
8/13/2019 Lap Trinh Java Coban
137/441
22
{private Label label;
public void init(){
Font font = new Font("Courier", Font.BOLD, 20);label = new Label("Thu nghiem voi Label");label.setFont(font);add(label);
}public void paint(Graphics g)
{ showStatus("Noi dung cua Label la: + label.getText());}
}
Nhn (Label)
-
8/13/2019 Lap Trinh Java Coban
138/441
23
Nt nhn (Button)
Mt sphng thc ca Button Button(); // to nt nhn
-
8/13/2019 Lap Trinh Java Coban
139/441
24
Button(String s); // to nt nhn c tn s void setLabel(String s); // i tn nt String getLabel(); // ly tn nt nhn
i tng nghe skin nhn nt cncit giao tipActionListener
Nt nhn (Button)importjava.applet.Applet;
importjava.awt.*;importjava.awt.event.*;
public class DemoButton extends Applet implements ActionListener
-
8/13/2019 Lap Trinh Java Coban
140/441
25
public class DemoButton extends Applet implements ActionListener{
private Button blueButton;private Button whiteButton;private Button helloButton;
public void init(){
blueButton = new Button("Blue");whiteButton = new Button("White");helloButton = new Button("Hello");
blueButton.addActionListener(this);whiteButton.addActionListener(this);helloButton.addActionListener(this);
-
8/13/2019 Lap Trinh Java Coban
141/441
Nt nhn (Button)
-
8/13/2019 Lap Trinh Java Coban
142/441
27
vn bn (TextField)
vn bn cho php nhn d liu tbn phm trn mt dng
-
8/13/2019 Lap Trinh Java Coban
143/441
28
Mt sphng thc TextField(...); // cc cu t void setEditable(boolean b); // t/tt chnhp
void setEchoChar(char c); // t k thin thi tng nghe cn ci t 2 giao tip
ActionListener
TextListener Ci t phng thc textValueChanged();
vn bn (TextField)importjava.applet.Applet;
importjava.awt.*;importjava.awt.event.*;
public class DemoTextField extends Applet implements ActionListener
-
8/13/2019 Lap Trinh Java Coban
144/441
29
p pp p{
private TextField txtEdit;private TextField txtReadOnly;private TextField txtPass;private final String PASSWORD = "Java";
public void init(){
txtEdit = new TextField("Your name here");txtPass = new TextField(12);
txtPass.setEchoChar('*');txtPass.addActionListener(this);txtReadOnly = new TextField("This text is read only");txtReadOnly.setEditable(false);
vn bn (TextField)add(txtEdit);
add(txtPass);add(txtReadOnly);
}
-
8/13/2019 Lap Trinh Java Coban
145/441
30
public void actionPerformed(ActionEvent event){if(txtPass.getText().equals(PASSWORD))
txtReadOnly.setText("Password is valid");else
txtReadOnly.setText("Invalid password !");}
}
La chn (Choice)
Choice cung cp kh nng la chn mttrong scc hng mc sn c Mt s phng thc
-
8/13/2019 Lap Trinh Java Coban
146/441
31
Mt sphng thc Choice(); // cu t void addItem(String s); // thm item l s String getItem(int index);// ly item c chsindex
String getSeclectedItem(); // tr v item c chn int getSelectedIndex(); // tr v index ca item
c chn
Lp nghe cit giao tip ItemListener Ci t phng thc itemStateChanged(...)
La chn (Choice)importjava.applet.Applet;
importjava.awt.*;importjava.awt.event.*;
public class DemoChoice extends Applet implements ItemListener
-
8/13/2019 Lap Trinh Java Coban
147/441
32
{
private Choice choice;private TextField txtText;private Font font;
public void init(){choice = new Choice();choice.addItem("TimesRoman");choice.addItem("Courier");
choice.addItem("Helvetica");choice.addItemListener(this);
La chn (Choice)txtText = new TextField("Sample Text", 16);
txtText.setEditable(false);font = new Font(choice.getItem(0), Font.PLAIN, 12);txtText.setFont(font);
-
8/13/2019 Lap Trinh Java Coban
148/441
33
add(choice);add(txtText);
}
public void itemStateChanged(ItemEvent event){
font = new Font(choice.getSelectedItem(), Font.PLAIN, 12);txtText.setFont(font);
}}
Checkbox (Hpnh du)
Checkbox cung cp cc hp tu chncho ngi dng
-
8/13/2019 Lap Trinh Java Coban
149/441
34
Mt sphng thc Checkbox(...); // cc cu t void setLabel(String s); // t nhn mi
boolean getState(); // ly trng thi hin ti Lp nghe cit giao tip ItemListener Ci t phng thc itemStateChanged(...)
Checkbox (Hp nh du)importjava.applet.Applet;
importjava.awt.*;importjava.awt.event.*;
public class DemoCheckbox extends Applet implements ItemListener{
-
8/13/2019 Lap Trinh Java Coban
150/441
35
{
private Checkbox checkBold;private Checkbox checkItalic;private TextField txtText;
public void init(){
checkBold = new Checkbox("Bold");checkItalic = new Checkbox("Italic");checkBold.addItemListener(this);
checkItalic.addItemListener(this);txtText = new TextField("Sample Text", 16);Font font = new Font("Courier", Font.PLAIN, 14);txtText.setFont(font);
Checkbox (Hp nh du)add(txtText);
add(checkBold);add(checkItalic);
}
bli id it St t Ch d(It E t t)
-
8/13/2019 Lap Trinh Java Coban
151/441
36
public void itemStateChanged(ItemEvent event)
{int valBold = Font.PLAIN;int valItalic = Font.PLAIN;if(checkBold.getState()) valBold = Font.BOLD;
if(checkItalic.getState()) valItalic = Font.ITALIC;Font font = new Font("Courier", valBold + valItalic, 14);txtText.setFont(font);
}}
Checkbox v CheckboxGroup
Cc Checkbox c thc t trongmt CheckboxGroup to ra ccradio button
-
8/13/2019 Lap Trinh Java Coban
152/441
37
radio button. V d: To 3 radio button
// To 3 radio button thuc cng mt nhm. Ban u
// radio1 c chn. Ti mi thi im chc thchn mt// trong 3 radio.CheckboxGroup g = new CheckboxGroup();Checkbox radio1 = new Checkbox(Radio1, g, true);
Checkbox radio2 = new Checkbox(Radio2, g, false);Checkbox radio3 = new Checkbox(Radio3, g, false);
Checkbox v CheckboxGroup// Cac import can thiet...
public class DemoRadio extends Applet implements ItemListener{
private Checkbox plain, bold, italic;private CheckboxGroup group;
-
8/13/2019 Lap Trinh Java Coban
153/441
38
p p g p;
private TextField txtText;public void init(){
group = new CheckboxGroup();
plain = new Checkbox("Plain", group, true);bold = new Checkbox("Bold", group, false);italic = new Checkbox("Italic", group, false);
txtText = new TextField("Sample Text");
txtText.setFont(new Font("Courier", Font.PLAIN, 14));plain.addItemListener(this);bold.addItemListener(this);italic.addItemListener(this);
Checkbox v CheckboxGroupadd(txtText);
add(plain);add(italic);add(bold);
}
-
8/13/2019 Lap Trinh Java Coban
154/441
39
public void itemStateChanged(ItemEvent event){
int mode = 0;if(event.getSource() == plain) mode = Font.PLAIN;
if(event.getSource() == italic) mode = Font.ITALIC;if(event.getSource() == bold) mode = Font.BOLD;txtText.setFont(new Font("Courier", mode, 14));
}}
-
8/13/2019 Lap Trinh Java Coban
155/441
-
8/13/2019 Lap Trinh Java Coban
156/441
Danh sch (List)public void itemStateChanged(ItemEvent event)
{ List list = (List) event.getSource();showStatus("Item " + list.getSelectedIndex() + " selected");
}public void actionPerformed(ActionEvent event)
-
8/13/2019 Lap Trinh Java Coban
157/441
42
public void actionPerformed(ActionEvent event){
List list = (List) event.getSource();String s = list.getSelectedItem();if(s.equals("White")) setBackground(Color.WHITE);
if(s.equals("Black")) setBackground(Color.BLACK);if(s.equals("Yellow")) setBackground(Color.YELLOW);if(s.equals("Green")) setBackground(Color.GREEN);repaint();
}}
Cc skin chut
qun l cc skin chut cn cit giao tip MouseListener
-
8/13/2019 Lap Trinh Java Coban
158/441
43
ouse s e e
MouseMotionListener
Cc phng thc ca MouseListener
void mousePressed(MouseEvent e); void mouseClicked(MouseEvent e); void mouseReleased(MouseEvent e);
void mouseEntered(MouseEvent e); void mouseExited(MouseEvent e);
Cc skin chut
Cc phng thc ca MouseMotionListener void mouseDragged(MouseEvent e); void mouseMoved(MouseEvent e);
-
8/13/2019 Lap Trinh Java Coban
159/441
44
i tng MouseEvent Cha cc thng tin v skin chut
V d: Chng trnh vn gin
Cc skin chut
// Cac import can thiet...
public class DemoMouse extends Applet implements MouseListener{private Rectangle[] rects;private final int MAX_RECT = 100;
-
8/13/2019 Lap Trinh Java Coban
160/441
45
private int numRects;public void init(){
rects = new Rectangle[MAX_RECT];
numRects = 0;addMouseListener(this);setForeground(Color.RED);
}
public void paint(Graphics g){for(int i=0; i< numRects; i++)
g.fillRect(rects[i].x, rects[i].y, rects[i].width, rects[i].height);
}
-
8/13/2019 Lap Trinh Java Coban
161/441
Cc skin chut
-
8/13/2019 Lap Trinh Java Coban
162/441
47
Cc lp adapter
Khi dng giao tip MouseListener ta phicit tt c cc phng thc ca n,ngay c khi ta ch dng mt trong s .
-
8/13/2019 Lap Trinh Java Coban
163/441
48
Java cung cp mt s lp cit snnhng phng thc ny gi l cc lpAdapter). Ta ch cn tha k, citphng thc cn thit. Cc lp adaptercng nm trong gi java.awt.event
-
8/13/2019 Lap Trinh Java Coban
164/441
Cc skin bn phm
Mt lp mun nghe skin bn phmphi cit giao tip KeyListener void keyTyped(KeyEvent e);
-
8/13/2019 Lap Trinh Java Coban
165/441
50
void keyPressed(KeyEvent e); void keyReleased(KeyEvent e);
Ch : C thsdng KeyAdapter thay chodng giao tip KeyListener
Cc skin bn phm// Cac import can thiet...
public class DemoKey extends Applet implements KeyListener{private String key;
-
8/13/2019 Lap Trinh Java Coban
166/441
51
public void init(){addKeyListener(this);key = "";
}
public void paint(Graphics g){
g.setFont(new Font("Arial", Font.BOLD, 72));
g.drawString(key, 100, 100);}
Cc skin bn phm
public void keyTyped(KeyEvent e){key = "" + e.getKeyChar();repaint();
-
8/13/2019 Lap Trinh Java Coban
167/441
52
}public void keyPressed(KeyEvent e) {}public void keyReleased(KeyEvent e){}
}
Bi tp ti lp
Bi 1: Vit mt applet thc hin cng vicsau: khi chut c di chuyn vo applet ththng bo Hello Mouse, khi ra khi applet
-
8/13/2019 Lap Trinh Java Coban
168/441
53
th thng bo Goodbye Mouse Bi 2: Vit mt applet cho php vngthng bng chut (ging MS Paint)
-
8/13/2019 Lap Trinh Java Coban
169/441
Lp FlowLayout
Cc thnh phn c a vo ttrisang phi, theo tng dng, nu htdng ssang dng mi.
-
8/13/2019 Lap Trinh Java Coban
170/441
55
Lp FlowLayout
Mt sphng thc ca FlowLayout FlowLayout(...); // cc cu t void setAlignment(int align); // cn l
-
8/13/2019 Lap Trinh Java Coban
171/441
56
public void init(){
// tao flow layout can le phaiFlowLayout layout = new FlowLayout(FlowLayout.RIGHT);
setLayout(layout);add(new TextField(15));add(new Button(Press me));
}
Lp BorderLayout
BorderLayout sp xp cc thnh phntheo 5 vng: EAST, WEST, SOUTH,NORTH, CENTER
-
8/13/2019 Lap Trinh Java Coban
172/441
57
Lp BorderLayout// ...
public void init(){// tao border layoutsetLayout(new BorderLayout());add(new Button(Up), BorderLayout.NORTH);
-
8/13/2019 Lap Trinh Java Coban
173/441
58
add(new Button(Left), BorderLayout.WEST);add(new Button(Right), BorderLayout.EAST);add(new Button(Down), BorderLayout.SOUTH);add(new Label(WELCOME, Label.CENTER),
BorderLayout.CENTER);}
Ch : Khi add mt component theo
BorderLayout cn chr vng, nu khngcomponent skhng c hin th.
Lp GridLayout GridLayout sp xp cc thnh phn trong
mt li c hng v ct. Kch thc cccomponent trong GridLayout l nhnhau.
-
8/13/2019 Lap Trinh Java Coban
174/441
59
private Button[] b;public void init(){
// tao grid layoutb = new Button[6];
b[0] = new Button("one");b[1] = new Button("two");b[2] = new Button("three");b[3] = new Button("four");
b[4] = new Button("five");b[5] = new Button("six");setLayout( new GridLayout(3,2) );for(int i=0; i
-
8/13/2019 Lap Trinh Java Coban
175/441
60
khung cha.Label 1
Label 2
Button
TextField
Container
Component
Lp Panel (Vng cha) Lp Panel ktha tContainer. N c
thc dng to ra cc giao dintheo mun.
-
8/13/2019 Lap Trinh Java Coban
176/441
61
V d: Mt giao din c thc nhiupanel sp xp theo mt layout nhtnh, mi panel li c cc componentsp xp theo mt layout ring.
Ch : Panel c bcc mc nh l
FlowLayout.
-
8/13/2019 Lap Trinh Java Coban
177/441
Bi tp
1. Vit applet cho php nhp 3 hsa, b, c(bng TextField) sau gii phng trnhax2 + bx + c = 0 v in kt qu.
2 Vit l t h h h 3 h b
-
8/13/2019 Lap Trinh Java Coban
178/441
63
2. Vit applet cho php nhp 3 hsa, b, cv 2 cn x1, x2 sau vthhm sax2+ bx + c = 0 trong on [x1, x2].
3. Vit applet to 3 nt bm. Bm nt 1 thvngu nhin 100 ng thng ra mnhnh. Bm nt 2 th vngu nhin 50 hnh
trn. Bm nt 3 th vngu nhin 50 hnhvung.
-
8/13/2019 Lap Trinh Java Coban
179/441
Bi tp
5. Vit applet cho php ngi dng vcc hnh chnht bng chut. Khi ngi dng n chut, kov sau thchut th mt hnh chnht tngng sc vra.M rng chng trnh: to 4 radio cho php
-
8/13/2019 Lap Trinh Java Coban
180/441
65
Mrng chng trnh: to 4 radio cho phpchn vOval, Rectangle, Fill Oval, Fill Rectangle.
6. Vit chng trnh cho php ngi dng iukhin mt qubng. Trn mn hnh c cc ntl: To, Nh, Tri, Phi, Ln, Xung. Khi ngidng n 1 nt th kch c/vtr ca qubng s
thay i theo. Yu cu to mt lp Ball ringbit.
Bi tp
7. Vit chng trnh m ttr chi d mn.Trn mn hnh c 3x3 nt bm v mi ntc thl c mn hoc khng (ngu nhin).
Khi ngi dng nhn mt nt nu nt kh th h h i d
-
8/13/2019 Lap Trinh Java Coban
181/441
66
Khi ngi dng nhn mt nt, nu nt khng c mn th cho php ngi dng ntip, cn khng th thng bo mn n v
dng li. Lu l mi nt c mt svngi dng c thnhn phm stng ngthay v nhn chut vo nt.
Lp trnh Java cbn
-
8/13/2019 Lap Trinh Java Coban
182/441
1
Cao c Thng - Trn Minh [email protected], [email protected]
Bi 5. GUI nng cao
TextArea, Canvas CardLayout, GridBagLayout
Frame Menu Dialog
mailto:[email protected]:[email protected]:[email protected]:[email protected] -
8/13/2019 Lap Trinh Java Coban
183/441
2
Frame, Menu, Dialog Scrollbar v ScrollPane
Gii thiu cc thnh phn Swing Phng php thit kMVC Bi tp
Cc thnh phnc gii thiuObject
Scrollbar Canvas Container TextComponent
Component
-
8/13/2019 Lap Trinh Java Coban
184/441
3
Frame
p
Window TextArea
Dialog
FileDialog
Vng vn bn (TextArea)
Cho php ngi dng nhp vo nhiudng vn bn. Toi tng TextArea
TextArea();
-
8/13/2019 Lap Trinh Java Coban
185/441
4
TextArea();
TextArea(int rows, int columns);
TextArea(String s); TextArea(String s, int rows, int columns);
Cc phng thc khc ging nhTextField
Vng vn bn (TextArea)// Cac import can thiet...public class DemoTextArea extends Applet implements ActionListener{
private TextArea textArea1, textArea2;private Button copy;
public void init(){
-
8/13/2019 Lap Trinh Java Coban
186/441
5
p (){
textArea1 = new TextArea("Sample Text", 5, 20);textArea2 = new TextArea(5, 20);
copy = new Button("Copy >>>");setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));copy.addActionListener(this);add(textArea1);add(copy);
add(textArea2);}
Vng vn bn (TextArea)public void actionPerformed(ActionEvent event){
textArea2.setText(textArea1.getText());}
}
-
8/13/2019 Lap Trinh Java Coban
187/441
6
Khung v (Canvas)
Khung vl mt vng chuyn vho, n khng bche bi cc thnh phngiao din khc.
Khung v c th x l cc s kin ging
-
8/13/2019 Lap Trinh Java Coban
188/441
7
Khung vc thxl cc skin gingnhApplet.
sdng khung v, cn to mt lpkhc dn xut tCanvas v cit npchng phng thcpaint().
Nn gi setSize cho khung v. Tovl (0,0) tnh trong khung v.
Khung v (Canvas)// Cac import can thiet...public class DemoCanvas extends Applet implements ActionListener{
private Button rectButton;private Button circleButton;private MyCanvas canvas;
public void init()
-
8/13/2019 Lap Trinh Java Coban
189/441
8
public void init(){
setLayout(new BorderLayout());
rectButton = new Button("Draw Rectangle");circleButton = new Button("Draw Circle");rectButton.addActionListener(this);circleButton.addActionListener(this);Panel panel = new Panel();
panel.add(rectButton);panel.add(circleButton);
-
8/13/2019 Lap Trinh Java Coban
190/441
Khung v (Canvas)
class MyCanvas extends Canvas{
private int shape;public void paint(Graphics g){
Dimension size = getSize();
g.setColor(Color.BLUE);if (shape == 1)
-
8/13/2019 Lap Trinh Java Coban
191/441
10
if(shape == 1)g.fillRect(40, 40, size.width-80, size.height-80);
else if(shape == 2)
g.fillOval(40, 40, size.width-80, size.height-80);}
public void draw(int shape){
this.shape = shape;repaint();
}}
Khung v (Canvas)
-
8/13/2019 Lap Trinh Java Coban
192/441
11
-
8/13/2019 Lap Trinh Java Coban
193/441
Thanh trt (Scrollbar)
Bi tp: Vit chng trnh cho php iukhin font chthng qua thanh trt. Khithanh trt thay i th cchhin th
(drawString) thay i theo.
-
8/13/2019 Lap Trinh Java Coban
194/441
13
Khung cun (ScrollPane)
Khung cun l mt container cho phpcha thnh phn GUI c kch thc lnhn chnh n.
Bi tp: Vit chng
-
8/13/2019 Lap Trinh Java Coban
195/441
14
trnh cho php vtrong mt canvas crng ln hn kchthc ca applet.t canvas votrong mt scrollpane.
Bcc nng cao
CardLayout Sp xp cc thnh phn
ging nhcc l bi. Ti
mi thi im chl biu tin c hin th
-
8/13/2019 Lap Trinh Java Coban
196/441
15
u tin c hin th. Mi l bi thng l mt
Panel v trn c thdng bt kmt bccno.
-
8/13/2019 Lap Trinh Java Coban
197/441
Khung cha Frame
Frame c dng xy dng cc ngdng GUI chy c lp. Frame l mt ca s c thanh tiu v
ccng bin. Bcc mc nh caFrame l BorderLayout
-
8/13/2019 Lap Trinh Java Coban
198/441
17
Frame l BorderLayout.
Frame ktha tWindow, n c thnghe cc skin xy ra trn ca skhici t giao tip WindowListener.
Cc ng dng c lp thng to ra casktha tlp Frame.
V dvFrameimportjava.awt.*;
importjava.awt.event.*;
public class DemoFrame{
public static void main(String[] args){
Frame frame = new Frame(Example on Frame);
-
8/13/2019 Lap Trinh Java Coban
199/441
18
Frame frame new Frame( Example on Frame );Label label = new Label("This is a label in Frame",
Label.CENTER);
frame.add(label, BorderLayout.CENTER);frame.setSize(500,500);frame.setVisible(true);frame.addWindowListener(new MyWindowListener());
}}
V dvFrame// Lop nghe doc lap (external listener)class MyWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent event){
System.exit(0);}
-
8/13/2019 Lap Trinh Java Coban
200/441
19
}
V dvFrame
importjava.awt.*;
importjava.awt.event.*;public class DemoFrame2{
public static void main(String[] args)
{MyFrame myFrame = new MyFrame("Example on my frame");
-
8/13/2019 Lap Trinh Java Coban
201/441
20
myFrame.setSize(250, 300);myFrame.setVisible(true);
myFrame.addWindowListener(new WindowAdapter(){// Lop nghe noi khong ten (anonymous inner class listener)public void windowClosing(WindowEvent e){
System.exit(0);
}});
}}
V dvFrameclass MyFrame extends Frame
{ public MyFrame(String title){
super(title);}
public void paint(Graphics g)
-
8/13/2019 Lap Trinh Java Coban
202/441
21
public void paint(Graphics g){
g.setColor(Color.BLUE);
g.fillOval(40, 40, 80, 80);}
}
Ci t listener
Lp nghe c lp: Lp nghe skin l mt lpkhc vi lp cha giao din.
Lp nghe ni khng tn: Lp nghe khng c
tn, chnh ngha phng thc xl skin(actionPerformed)
-
8/13/2019 Lap Trinh Java Coban
203/441
22
(act o e o ed)
Lp nghe ni c tn: Lp nghe c khai bo
nm trong mt lp khc. Lp ni c thtruy xut cc phng thc, d
liu ca lp cha n (outer class)
Dng lp nghe ni c tn l mt kthut phbin.
Khung cha Frame
To cc thnh phn GUI v xl skintrong Frame cng ging nhtrong Applet. Ch :
Frame khng c cc phng thc init, startnh trong Applet.
-
8/13/2019 Lap Trinh Java Coban
204/441
23
nhtrong Applet. Cc ng dng c lp dng Frame phi c hm
main vc chy trc tip bng lnh java Cn c lnh setSize, setVisible(true)c th
hin thFrame.
cui chng trnh nn c lnh:System.exit(0);
Bi tp ti lp
Bi 1: Vit li chng trnh Tnh Tng 2ssdng Frame. Bi 2: Mrng bi 1 khi ngi dng
ng ca sth sxut hin mt thngbo xc nhn vic ng
-
8/13/2019 Lap Trinh Java Coban
205/441
24
bo xc nhn vic ng.
DngJOptionPane.showConfirmDialog
Thc n (Menu)
Object
MenuComponent
M I M B
-
8/13/2019 Lap Trinh Java Coban
206/441
25
MenuItem MenuBar
Menu CheckboxMenuItem
Thc n (Menu)
MenuBarMenu
-
8/13/2019 Lap Trinh Java Coban
207/441
26
Separator
MenuItem
Thc n (Menu) To thc n
To v gn MenuBar vo ca s MenuBar menuBar = new MenuBar();
myFrame.setMenuBar(menuBar);
To Menu v gn vo MenuBar Menu fileMenu = new Menu(File);
-
8/13/2019 Lap Trinh Java Coban
208/441
27
( );
menuBar.add(fileMenu);
To MenuItem v gn vo Menu MenuItem openItem = new MenuItem(Open);
fileMenu.add(openItem);
To ng phn cch fileMenu.addSeparator();
Thcn (Menu)
X l skin trn cc MenuItemi tng nghe cc MenuItem phi citgiao tip ActionListener
Tham kho thm v CheckboxMenuItem
-
8/13/2019 Lap Trinh Java Coban
209/441
28
CheckboxMenuItem
PopupMenu
-
8/13/2019 Lap Trinh Java Coban
210/441
Hp hi thoi (Dialog)
Dialog ktha tlp Window, n c bcc mc nh l BorderLayout.
Hp thoi c thcha cc thnh phn
GUI v xl cc skin nhmt ca sbnh thng.
-
8/13/2019 Lap Trinh Java Coban
211/441
30
g
-
8/13/2019 Lap Trinh Java Coban
212/441
V dvFrame, Menu v Dialog
importjava.awt.*;importjava.awt.event.*;
public class DemoFrame3{
public static void main(String[] args
{MyFrame myFrame = new MyFrame("Example on my frame");myFrame.setSize(500, 400);
-
8/13/2019 Lap Trinh Java Coban
213/441
32
myFrame.setSize(500, 400);myFrame.setVisible(true);
myFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){
System.exit(0);
}});
}}
V dvFrame, Menu v Dialog
class MyFrame extends Frame implements ActionListener{
private MenuBar menuBar;private Menu menu;private MenuItem circleItem, rectItem;
public MyFrame(String title){
super(title);
-
8/13/2019 Lap Trinh Java Coban
214/441
33
super(title);menuBar = new MenuBar(); setMenuBar(menuBar);
menu = new Menu("Draw"); menuBar.add(menu);
circleItem = new MenuItem("Circle");rectItem = new MenuItem("Rectangle");menu.add(circleItem);
menu.add(rectItem);circleItem.addActionListener(this);rectItem.addActionListener(this);
}
V dvFrame, Menu v Dialog
public void actionPerformed(ActionEvent e){
if (e.getSource() == circleItem){ MyDialog dialog = new MyDialog(this,
"Modeless Dialog: Circle", false);}
}}
class MyDialog extends Dialog
-
8/13/2019 Lap Trinh Java Coban
215/441
34
class MyDialog extends Dialog{
MyDialog(Frame parent, String title, boolean isModel){
super(parent, title, isModel);add(new Label("Hi, I am a dialog"), BorderLayout.CENTER);
setSize(300, 200);setVisible(true);addWindowListener(new MyDialogListener(this));
}};
V dvFrame, Menu v Dialog// Co the dat lop nay lam lop noi (inner class) cua lop MyDialog
class MyDialogListener extends WindowAdapter{Dialog dialog;
MyDialogListener(Dialog dia)
{dialog = dia;
}
-
8/13/2019 Lap Trinh Java Coban
216/441
35
}
public void windowClosing(WindowEvent e){
dialog.setVisible(false);dialog.dispose();
}}
Gii thiu JFC
JFC (Java Foundation Class) L thvin lp trnh giao din hopht trin da trn thvin AWT
JFC cung cp kh nng to giao din linhng, uyn chuyn hn so vi AWT
-
8/13/2019 Lap Trinh Java Coban
217/441
36
JFC c sn trong cc phin bn tJdk 1.2
tri. Cc lp ca JFC nm trong gijavax.swing
Cc thnh phn Swing
Cc thnh phn GUI ca Swing thngbt u bi chJ: JButton, JLabel, JTextArea, JFrame,
JPanel, JCheckBox, JRadioButton, JList,JComboBox, JScrollPane
-
8/13/2019 Lap Trinh Java Coban
218/441
37
Cc thnh phn mrng nh:
JTabbedPane, JProgressBar, JTable, JTree Vic xl skin trn cc thnh phn
Swing ging nhtrn cc thnh phnAWT.
V dv Swing
importjava.awt.*;importjavax.swing.*;
public class HelloJFC{
public static void main(String[] args){
JFrame frame = new JFrame("JFC");Icon icon = new ImageIcon("rose.gif");JButton button = new JButton("Rose", icon);
-
8/13/2019 Lap Trinh Java Coban
219/441
38
J utto butto e J utto ( ose , co );button.setMnemonic('R');
button.setToolTipText("Button Rose");
frame.getContentPane().setLayout(new FlowLayout());frame.getContentPane().add(button);frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);frame.setSize(400, 300);frame.setVisible(true);
}}
V dv Swing
-
8/13/2019 Lap Trinh Java Coban
220/441
39
Thit kchng trnh Cc thnh phn ca chng trnh
Dliu ca bi ton cn xl (Model) Hin thdliu ca bi ton thng qua giao
din (View) iu khin tng tc vi ngi dng(Controller)
-
8/13/2019 Lap Trinh Java Coban
221/441
40
(Controller)
V d: Chng trnh iu khin qubng Model: Dliu vqubng View: Giao din hin thdliu qubng
Controller: iu khin di chuyn qubng
Thit kchng trnh Model: Dliu vbng gm totm (x,y) v
bn knh bng. View: Giao din hin thgm c hnh qubng
v 2 nt iu khin.
Controller: Khi n nt iu khin th qubng dichuyn.
-
8/13/2019 Lap Trinh Java Coban
222/441
41
Mt sphng php thit k Big Blob
Tt cModel, View, Controller t trongmt mt lp duy nht.
-
8/13/2019 Lap Trinh Java Coban
223/441
42
ControllerModel View
V dvi Big Blob// file TestBall.java tao ra mot big blobpublic class TestBall
{public static void main(String[] args){
MyBallFrame myFrame = new MyBallFrame(Ball Frame);
myFrame.setSize(400, 300);myFrame.setVisible(true);...
}
-
8/13/2019 Lap Trinh Java Coban
224/441
43
}}
V dvi Big Blob// MyBallFrame la mot big blob
// No chua ca model, view va controllerclass MyBallFrame extends Frame implements ActionListener{
private int x, y, radius;// du lieu ve qua bong (model)private Button moveLeft, moveRight;// thanh phan GUI (view)
...moveLeft.addActionListener(this);
h dd ( h )
-
8/13/2019 Lap Trinh Java Coban
225/441
44
moveRight.addActionListener(this);
...
// xu ly su kien (controller)public void actionPerformed(ActionEvent event)...
}
Mt sphng php thit k Presentation-Model
Tch ring Model v Presentation (gmView + Controller)
ControllerView
-
8/13/2019 Lap Trinh Java Coban
226/441
45
ControllerView
Model
V dvi Presentation-Model// file TestBall.java tao model va presentationpublic class TestBall
{public static void main(String[] args){
// tao model
BallModel myBall = new BallModel(50, 50, 20);
// tao presentationBallPresentation myFrame = new BallPresentation(myBall);
-
8/13/2019 Lap Trinh Java Coban
227/441
46
y ( y );...
}}
V dvi Presentation-Model// file BallPresentation.java chua view va controller// No co mot thanh phan du lieu la model can xu ly
// Cach 1: Dung top-level listenerpublic class BallPresentation extends Frame implements ActionListener{
private BallModel ball; // model can xu ly
private Button moveLeft, moveRight; // thanh phan GUI (view)...moveLeft.addActionListener(this);moveRight addActionListener(this);
-
8/13/2019 Lap Trinh Java Coban
228/441
47
moveRight.addActionListener(this);...
// xu ly su kien (controller)public void actionPerformed(ActionEvent event)...
}
V dvi Presentation-Model
// file BallPresentation.java, cach 2: dung lop nghe la inner classpublic class BallPresentation extends Frame
{private BallModel ball; // model can xu lyprivate Button moveLeft, moveRight; // thanh phan GUI (view)...
moveLeft.addActionListener(new ToLeftListener());moveRight.addActionListener(new ToRightListener());...// xu ly su kien (controller)
-
8/13/2019 Lap Trinh Java Coban
229/441
48
class ToLeftListener implements ActionListener
{public void actionPerformed(ActionEvent event){
ball.moveLeft();
repaint();// goi phuong thuc cua lop outer}
}...
}
V dvi Presentation-Model// file BallModel.java chua du lieu va phuong thuc cua qua bong
// Model khong phu thuoc vao Presentationpublic class BallModel{
private int x, y, radius;
BallModel(int x, int y, int radius) ...void moveLeft() ...void moveRight() ...
-
8/13/2019 Lap Trinh Java Coban
230/441
49
g ()int getXCenter() ...
int getYCenter() ...int getRadius() ...
}
Mt sphng php thit k Model-View-Controller
Tch ring Model, View v Controller
ControllerView
-
8/13/2019 Lap Trinh Java Coban
231/441
50
Model
-
8/13/2019 Lap Trinh Java Coban
232/441
-
8/13/2019 Lap Trinh Java Coban
233/441
V dvi MVC
// file BallView.javapublic class BallView extends Frame{
private BallModel ball; // model can xu lyprivate Button moveLeft, moveRight;
BallView(BallModel ballModel)
{ ball = ballModel;}
public void paint(Graphics g)
-
8/13/2019 Lap Trinh Java Coban
234/441
53
p p ( p g)
{ g.fillOval(...);}// phuong thuc nay duoc goi boi controllerpublic void addToLeftListener(ActionListener al)
{buttLeft.addActionListener(al);
}...
}
V dvi MVC// file BallController.javapublic class BallController
{private BallModel ball; // model can xu lyprivate BallView view; // view can xu ly...BallController(BallModel ballModel, BallView ballView){
// nhan model va view can xu lyball = ballModel;view ballView;
-
8/13/2019 Lap Trinh Java Coban
235/441
54
view = ballView;
// dat lang nghe tren viewview.addToLeftListener(new ToLeftListener());view.addToRightListener(new ToRightListener());
}
V dvi MVC// file BallController.java (tiep theo)
// xu ly su kien thong qua inner classclass ToLeftListener implements ActionListener{
public void actionPerformed(ActionEvent event){ball.moveLeft();view.repaint();
}
-
8/13/2019 Lap Trinh Java Coban
236/441
55
}
}...
}
V dvi MVC// file BallModel.java chua du lieu va phuong thuc cua qua bong
// Model khong phu thuoc vao View va Controllerpublic class BallModel{
private int x, y, radius;
BallModel(int x, int y, int radius) ...void moveLeft() ...void moveRight() ...int getXCenter()
-
8/13/2019 Lap Trinh Java Coban
237/441
56
int getXCenter() ...
int getYCenter() ...int getRadius() ...
}
Case study: Chng trnh i tin
Vit chng trnh cho php tnh slngtin VNtng ng vi mt slng USDcho trc. Bit rng 1 la = 16,798 .
M tgiao din nhsau:
-
8/13/2019 Lap Trinh Java Coban
238/441
57
Case study: Chng trnh i tin
ExchangeModel ?
ExchangeView ?
ExchangeController ?
Ci t v thnghim
-
8/13/2019 Lap Trinh Java Coban
239/441
58
Ti liu tham kho http://www.dickbaldwin.com/toc.htm
http://leepoint.net/notes-java/index.html
http://java.sun.com/developer/onlineTrainin
g/GUI/Swing2/shortcourse.htm
-
8/13/2019 Lap Trinh Java Coban
240/441
59
Bi tp1. Vit chng trnh cho php ngi dng chn
mt trong hai chl Line v Point (dngCheckbox), sau ngi dng c thdngchut vtrong mt Canvas nm giamn hnh (ging MS Paint).
2. Vit li cc chng trnh lin quan tiGraphics s dng Frame
-
8/13/2019 Lap Trinh Java Coban
241/441
60
Graphics sdng Frame.3. Vit li cc chng trnh lin quan ti thnh
phn giao din GUI sdng Frame.
Bi tp4. Vit chng trnh to 3 menu trong mt
Frame nhsau:Colors Shapes Help
Red Circle About
Green RectBlue Line
Menu Colors cho php chn mu, menu
-
8/13/2019 Lap Trinh Java Coban
242/441
61
Shapes cho php chn hnh. Khi ngi dngchn menu v n nt drawtrn Frame thchng trnh vra hnh v mu c chn.
Menu Help About hin thhp thoi gii thiuvchng trnh.
Bi tp5. Vit chng trnh tnh din tch cc hnh:
To mt Frame trong bn tri c 3 lachn l Circle, Rectangle v Triangular(dng Checkbox). Khi ngi dng chn mttrong cc hnh th bn phi shin thcc nhp liu tng ng: Circle c mt nhpl Radius, Rectangle c 2 nhp l Width v
-
8/13/2019 Lap Trinh Java Coban
243/441
62
, g pHeight, Triangular c 3 nhp l 3 cnh a,b, c. Sau ngi dng chn nt Computeth chng trnh tnh v hin thkt qulnmn hnh. (Dng CardLayout)
Bi tp6. Vit chng trnh to 2 menu item l Nhp
hng v Bn hng. Khi ngi dng chnnhp hng th hin thFrame cho php nhpvo tn hng, slng, n gi (lu thngtin ny vo mng). Khi ngi dng chnBn hng th hin thFrame (hoc Dialog)cho php nhp vo tn ngi mua v cho
-
8/13/2019 Lap Trinh Java Coban
244/441
63
php chn mua mt trong scc mt hngc sn; sau hin thstin m ngi phi tr. (Thit ktheo MVC)
Lp trnh Java cbn
Cao c Thng - Trn Minh [email protected], [email protected]
-
8/13/2019 Lap Trinh Java Coban
245/441
1
-
8/13/2019 Lap Trinh Java Coban
246/441
X l li v ngoi l
Trong mt sngn ngnhC, vic x l lithng c ci t ngay ti cc bc thchin ca chng trnh. Cc hm s tr v mtcu trc li khi gp li.
V d: Tm kim phn t trong mt danh sch ErrorStruct error = new ErrorStruct();
TableEntry entry = lookup(Marianna, employee, error);
-
8/13/2019 Lap Trinh Java Coban
247/441
3
if (entry == null) {
return error;
}
X l li v ngoi l
M lnh v m x l li nm xen k khinlp trnh vin kh theo di c thut tonchnh ca chng trnh.
Khi mt li xy ra ti hm A, tt c cc ligi hm lng nhau n A u phi x l lim A tr v.
-
8/13/2019 Lap Trinh Java Coban
248/441
4
X l li v ngoi l
Trong Java, vic x l li c thc ci ttrong mt nhnh c lp vi nhnh chnh cachng trnh.
Li c coi nhnhng trng hp ngoi l(exceptional conditions). Chng cbt/nm (catch and throw) khi c li xy ra.=> Mt trng hp li s chc x l ti
-
8/13/2019 Lap Trinh Java Coban
249/441
5
ni cn x l.=> M chnh ca chng trnh sng sa,ng vi thit kthut ton.
V d 1importjava.awt.Point;
public class MyArray{
public static void main(String[ ] args) {
System.out.println("Goi phuong thuc methodeX()");
methodeX();
System.out.println("Chuong trinh ket thuc binh thuong");}
public static void methodeX() {
Point[ ] pts = new Point[10];
-
8/13/2019 Lap Trinh Java Coban
250/441
6
for(int i = 0; i < pts.length; i++) {pts[i].x = i;
pts[i].y = i+1;
}
}
}
Kt qu thc thi v d 1
Goi phuong thuc methodeX()Exception in thread "main" java.lang.NullPointerException
at MyArray.methodeX(MyArray.java:14)at MyArray.main(MyArray.java:7)
Gii thch: H thng tung ra mt exception thuc lpNullPointerException khi gp li. Sau chng trnh kt
-
8/13/2019 Lap Trinh Java Coban
251/441
7
thc.
V d 2public class MyDivision {
public static void main(String[ ] args) {System.out.println("Goi phuong thuc A()");
A();
System.out.println("Chuong trinh ket thuc binh thuong");
}
public static voidA() {B();
}
public static void B() {
-
8/13/2019 Lap Trinh Java Coban
252/441
8
C();}
public static void C() {
float a = 2/0;
}
}
Kt qu thc thi v d 2
Goi phuong thuc A()Exception in thread "main" java.lang.ArithmeticException: / by zero
at MyDivision.C(MyDivision.java:14)at MyDivision.B(MyDivision.java:11)at MyDivision.A(MyDivision.java:8)
at MyDivision.main(MyDivision.java:4)
Gii thch: Phng thc A() gi B(), B() gi C(), C() gy ra li
-
8/13/2019 Lap Trinh Java Coban
253/441
9
chia cho 0 v h thng nm ra mt exception thuc lpArithmeticException. Sau chng trnh kt thc.
Ngoi l
Khi mt phng thc gp li no,v d nhchia khng, vt kch thcmng, m file cha tn ti th cc
ngoi l sc nm ra. Chng trnhdng li ngay lp tc, ton b phnm pha sau s khngc thc thi.
-
8/13/2019 Lap Trinh Java Coban
254/441
10
Java h tr cch thc x l ngoi l(exception handling) tu theo nhu cuca chng trnh.
X l ngoi l
Khi try/catcht on m c khnng xy ra ngoi ltrong khi try
to
n m x
l ngo
i l
trong kh
icatch
Khi xy ra ngoi l trong khi try, cc culnh trong khi catch sc thc hin
-
8/13/2019 Lap Trinh Java Coban
255/441
11
tu vo kiu ca ngoi l. Sau khi thc hin xong khi catch, iu
khin sc tr li cho chng trnh.
Khi try/catch
V d 1:try{
methodeX();
System.out.println(Cau lenh ngay sau methodX());}catch (NullPointerException e){
System.out.println(Co loi trong khoi try);
}
-
8/13/2019 Lap Trinh Java Coban
256/441
12
}System.out.println(Cau lenh sau try/catch);
Khi try/catch
t {
try {A();
} catch (Exception e) {
System.out.println(Co loi trong A());}
V d 2:
V d 3:
-
8/13/2019 Lap Trinh Java Coban
257/441
13
try { x = System.in.read();System.out.println(x = + x);
} catch (IOException e) {System.out.println(Error: + e.getMessage());
}
Khi try/catch
try{
String s = buff.readLine();
int a = Integer.parseInt(s);x[i++] = a;} catch (IOException e) {
System.out.println(Error IO: + e.getMessage());} catch (NumberFormatException e) {
S stem o t p intln(E o Fo mat + e getMessage())
V d 4:
-
8/13/2019 Lap Trinh Java Coban
258/441
14
System.out.println(Error Format: + e.getMessage());} catch (ArrayIndexOutOfBoundsException e) {System.out.println(Error Index: + e.getMessage());
}
Khi finally
Khi mt ngoi l xy ra, chng trnh dngli, mt scng vic dn dp c th skhng c thc hin (v dnhng file).
Khi finally m bo rng cc cu lnh trong
lun c thc hin, k c khi ngoi lxy ra.
try
{
-
8/13/2019 Lap Trinh Java Coban
259/441
15
{ doSomething(); // phng thc ny c th gy ra ngoi l} finally {
cleanup();}
Tm tt v x l ngoi l
Cc ngoi l xy ra khi gp li. C th bt v x l cc ngoi l bng cch
sdng khi try/catch. Nu khng chngtrnh s kt thc ngay (vi ng dng
console) hoc tip tc tn ti (vi ng dngGUI).
Khi bt ngoi l, phi bit r kiu ngoi l
cn bt C th dng kiu cha Exception
-
8/13/2019 Lap Trinh Java Coban
260/441
16
cn bt. C th dng kiu cha Exception. chc chn vic dn dp lun c thc
hin, dng khi finally. C th kt hp
try/catch/finally.
Mt s lp ngoi l
ClassNotFoundException
Throwable
Error Exception
RuntimeExceptionAssertionError IOException
Object
-
8/13/2019 Lap Trinh Java Coban
261/441
17
NullPointerException ArithmeticException
Mt s lp ngoi l
Lp Throwable C mt bin String lu thng tin chi titv ngoi l xy ra
Mt sphng thc c bn Throwable(String s); // To mt ngoi l ctn l s.
String getMessage(); // Ly thng tin vngoi l
-
8/13/2019 Lap Trinh Java Coban
262/441
18
ngoi l void printStackTrace(); // In ra tt c cc
thng tin lin quann ngoi l
Mt s lp ngoi l
Lp Exception C nhiu ngoi l thuc lp con caException.
Ngi dng c th to ra cc ngoi l ktha tException.
Lp Error
Ch nhng li nghim trng v khng d
-
8/13/2019 Lap Trinh Java Coban
263/441
19
Ch nhng li nghim trng v khng don trc c nhThreadDead,LinkageError, VirtualMachineError...
Cc ngoi l kiu Error t c x l.
Mt s lp ngoi l
RuntimeException: Ch cc ngoi l cth xy ra khi JVM thc thi chng trnh NullPointException: con tr null
OutOfMemoryException: ht b nh ArithmeticException: li ton hc, li chiakhng
ClassCastException: li p kiu
-
8/13/2019 Lap Trinh Java Coban
264/441
20
ClassCastException: li p kiu ArrayIndexOutOfBoundsException: vtqu ch smng
...
Hai loi ngoi l