Lap Trinh Java Coban

download Lap Trinh Java Coban

of 442

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