Εισαγωγη Στη Java

Embed Size (px)

DESCRIPTION

Εισαγωγη Στη Java Ε.Μ.Π

Citation preview

  • / ,

    JAVA

  • 1. 1 1.1 Java 1.2 Java 1.3 Java Applet 1.4 Internet Java 2. 5 2.1 Java 2.2 Java 2.3 Java 2.4 (Inheritance) 2.5 (overloading) 2.6 (constructors) 2.7 (Finalization) 2.8 (access specifiers) 2.9 (Modifiers) 2.10 Casting 2.11 2.12 (Polymorfism) 2.13 (Interfaces) 2.14 (Packages) 3. - - 19 3.1 Java 3.2 , literals, , 3.3 3.4 (Strings) 3.5 3.6 4. (Exceptions) 31 5. Applets Java 33 5.1 Applets 5.2 Applets Web 5.3 , X 5.3.1 Graphics 5.3.2 Fonts 5.3.3 Color 5.3.4 6. Threads 41 6.1 Threads 6.2 H Threads 6.3 Threads Applets 6.4 Threads

  • 6.5 Threads 7. Abstract Windowing Toolkit (AWT) 47 7.1 GUI 7.2 GUI 7.3 GUI (GUI Events) 7.4 Adapter 7.5 applet EQ 8. Swing (Swing GUIs) 59 8.1 Top-Level Swing Containers Components 8.2 Event Handlers 8.3 Swing Threads 8.3.1 invokeLater 9. Animation Java 69 9.1 Animation 9.2 animation loop 9.3 animation 9.4 10. / Streams 75 10.1 10.2 System 10.3 System 10.4 DataInput Stream 10.5 DataOutput Stream 11. Java 78 11.1 Uniform Resource Locator (URL) 11.1.1 URL (relative) 11.1.2 URL 11.1.3 MalformedURLException 11.1.4 URL 11.1.5 URL 11.1.6 URL 11.1.7 URLConnection 11.1.8 URLConnection 11.2 Sockets 86 11.2.1 Client Server 11.2.2 Client Server TCP sockets 11.2.3 Socket 11.2.4 ServerSocket 11.2.5 Datagrams 11.2.6 UDP Datagrams 11.2.7 DatagramSocket 11.2.8 DatagramPacket

  • Java 1

    1. Internet World-Wide Web . Java, Sun microsystems TM. Java . Java ( C++). applets (applet =

    HTML Web Browser). Interpreted . java compiler

    (bytecode) . interpreter (=) bytecode . java bytecodes , , java interpreter. java bytecode , ( Kilobytes). .

    (distributed). Java . sites.

    (secure). - , ' Java applet .

    multithreaded. Java threads. , Java runtime system (interpreter) (scheduler), threads . .

    multimedia . Java multimedia . .

    1.1 Java Java Java 2 Platform Standard Edition (J2SE), Sun microsystems. Java J2SE Java 2 5.0. javac compiler Java. command-line : javac

    . javac , . : .class.

    java interpreter Java. : java , java myClass java myClass.class.

    javaw ( Windows 95/NT) java shell .

    jdb Java debuger. javah C files stub files .

    C, .

    javap Java disassembler. javadoc documentation.

    .

  • Java 2

    appletviewer applets Java. stand-alone , , appletviewer java javaw.

    1.2 Java Java (stand-alone application). HelloWorldApp.java : /** * The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); //Display the string. } } Compile Java compiler: javac HelloWorldApp.java compiler HelloWorldApp.class

    Java interpreter: java HelloWorldApp "Hello World!" 1.3 Java Applet

    Java applet. HelloWorld.java : import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); } } Compile Java compiler: javac HelloWorld.java compiler HelloWorld.class HTML Hello.html Applet. directory HelloWorldApp.class.

  • Java 3

    A Simple Program Here is the output of my program: HTML Java-enabled browser Internet Explorer "Hello World!" browser. 1.4 Internet Java Internet Java. Java Tutorial: http://java.sun.com/docs/books/tutorial/ . . Java API : http://java.sun.com/j2se/1.5/docs/api/index.html Java. Application Programming Interface Java (Java API) Java (), . Java Platform: http://java.sun.com/j2se/1.5.0/download.jsp Java 1.1. Java. JRE (Java Runtime Environment) Web Browser . JRE Web Browser java applets.

  • Java 4

  • Java 5

    2.

    , (OOP - Object Oriented Programming), . OOP (objects) () . user interfaces ...

    User Interface - 1 User Interface - 2

    Us . 2 UI ( ). , UI 2 UI . (class) . - . - , (instances) instantiation. ' . . ( ). 2.1 JAVA

    < > ... , main() C. , , . interpreter . : JAVA.

  • Java 6

    2.2 JAVA

    . . ` C PASCAL. instance variables . structure C structures. ( ) , . C. , ( - ), - . : .(); .. mycar.startEngine(); structure C. . . OOP. . . interface . implementation hiding data abstraction. . 2.3 JAVA

    java structure C. : class { ; () { } ; () { }

  • Java 7

    ... } .. class Apple { int num_of_vitamins; // int countVitamins() { // return num_of_vitamins; } Vitamins v1, v2, v3; // Vitamin getVitamin(int num) { // return ....; } } num_of_vitamins int. java ( int, float, char ), . Vitamins v1, v2, v3 Vitamin ( ) . . . . . (debugging). class test { float add2Accum(float f) { // Add to accumulator. return (Accumulator += f); } float Accumulator = 0.0; // The accumulator. } ( primitive types) java, (statements) , . 2.4 (inheritance) . " ". (instances) . . , extends : java : class A { int a; void add(int x) { a += x;} }

  • Java 8

    class B extends A { // 'a' 'void add(int x) {...}' . int prev; void sub(int x) { prev = a; a -= x; } } a void add(int x). . . ' ( ). .. class B extends A { int square() { return a*a; } void increaseBy1() { add(1); } } . : class B extends A { a : float; // . void add(int x) { // add(int x). // overriding. a = a + ((float) x); print(a); } } , , (overriding) / / . override , . . , (), (subclass) . (superclass) . subclassing. . . . ..

    class A

    class B

    class C

    class D

  • Java 9

    superclass D. superclass C, superclass C! ( ). B, D subclasses A, C subclass . C . overriding / .... C override ' . - 1 Object compiler ( ). :

    class Object (*)

    class A

    class B

    class C

    class InputStream (*) class Socket (*)

    class mySocket class D

    (*) compiler A, B, C, D, mySocket . - 2 ( this super) - (overrides) . subclass . .. class A { void doSomething() { ...... } } class B extends A { void doSomething() { // "" (overrides) ........ // doSomething() . } } A o1; B o2; o1.doSomething(); // doSomething() . o2.doSomething(); // doSomething() .

  • Java 10

    ( C) doSomething() , , ' . java . , , - super . override, ( doSomething()), : super.doSomething(); java super this () . this : ) . class A { int a; void set(int a) { this.a = a; } } ) . . class A { void make_a_new_object() { B tmp; // create a new instance of B and store it in tmp. // Then give tmp a pointer to you. tmp.owner(this); } } 2.5 (overloading) , . class number { int a; void add(int x) { a += x; } void add(float f) { a += ((int) f); } void add(number n) { a += n.get_a(); } int get_a() { return a; } }

  • Java 11

    void add(...) (3) . (overloading) . object oriented . : aMethod(), aMethod(type1), aMethod(type2), aMethod(type1, type2), aMethod(type2, type1). . , ' , , . . 2.6 (constructors)

    , (. object ). (constructors) . constructors . constructors () . . constructor constructor ( ) . constructors. JAVA , : class A { int n; A() { // Constructor - 1 n=0; } A(int x) { // Constructor - 2 n = x; } } constructors . , constructors , void. ( ). : A a; a = new A(); a = new A(5); 1. constructor default null constructor

    . () constructors default constructor .

    2. () constructors. .

    3. constructor , default constructor . constructor constructor ....

  • Java 12

    4. constructor instanciation default constructor ( ) . constructor super(....); super(...) super , ( this), constructor . ( super).

    5. super(...) this(....) constructors .

    java strings ( ) . string java String, : String str = new String("Hello, I am a new string!"); String str = "Hello, I am a new string!"; 2.7 (Finalization) C++ Object PASCAL (destructors) . destructors . JAVA . . (dangling pointer). JAVA (finalization) . . runtime system java . (garbage) . void finalize() clean-up. . finalize() . - garbage collection JAVA runtime system. 2.8 (access specifiers) . access specifiers. access specifiers : ; () { } access specifiers JAVA , , / . ' :

  • Java 13

    public - / , .

    protected - / .

    private - / .

    - public package. : class A { public int a; // int b; // package, protected c; // private d; // . public A() {...} public void add(int x) {....} void add(A a) {.....} protected int convert_A_to_int (A a) { return a.getValue(); } private void who_am_i() { System.out.println("I am class A!"); } } class B extends A { // I CAN SEE : a, b, c, A() via super(), add(int), add(A), // convert_A_to_int(A), BUT I CAN'T SEE : d, who_am_i() } : public class A { ....... } () , command line java interpreter . .java, (.. A.java). , - : public static void main(String args[]) { ..... // ! } main() C. 2.9 (Modifiers)

    JAVA / . ` : ; (

  • Java 14

    } modifiers : final - .

    . , final int a = 10; final int a; a=10; override. .

    synchronized - threadsafe. , ( ), . . : () , ( ), .

    abstract - , {...} semicolon (;). abstract abstarct. compile-time error ( new) abstract . ' override abstract .

    static - / . . static () . : .. : static static. . static public static void main(String args[]) , .

    native - native . C bytecode . native javah.

    2.10 Casting

    C JAVA casting . : int a; short b = 4; a = (int) b; // short --> int explicit casting. a = b; // implicit casting b = (short) a; // int --> short explicit casting ONLY! A a; B b; // B subclass of A a = (A) b; // B --> A; a = b; b = (B) a; // explicit casting is required! explicit casting , int (32-bit ) byte (8-bit ).

  • Java 15

    , ( ), explicit casting . 2.11 -

    () . (int, float,short ) C. int a; short b; . C (* & ->) . . JAVA . A a = new A(); a++; // !!! int a; a++; // a int // . ( a) , , , (references - ref) (handlers) runtime system. runtime system garbage collection . null . 2.12 (Polymorfism) . . :

    (overriding) (overloading) (dynamic method binding)

    , : (Cow, Dog Snake) (abstract) Animal, speak(). public class AnimalReference {

  • Java 16

    public static void main(String[] args) Animal ref; // set up a reference for an Animal // make specific objects

    Cow aCow = new Cow("Bossy"); Dog aDog = new Dog("Rover");

    Snake aSnake = new Snake("Earnie");

    // now reference each as an Animal ref = aCow; ref.speak(); ref = aDog; ref.speak(); ref = aSnake; ref.speak(); } speak() Animal, ( ) . (dynamic method binding) 2.13 (Interfaces)

    (interface) . . nterface . interfaces interfaces.

    interface abstract : interface interfaces

    interface Java

    .

    interface interfaces : public interface myinterface extends superinterface1,superinterface2, {

    final String One = "One; final String Tow = Two; public void method();

    } interfaces I . public, static, final public abstract. access modifiers private protected.

    interfaces . applet thread : public class MyThreadedApplet extends Applet implements Runnable {

  • Java 17

    }

    Runnable interface thread Thread. threads.

    interface. Runnable interface public void Method (Runnable mythread,String S, double d) { ... }

    interface .

    interfaces

    interface interface. 2.14 (packages) K (packages) directory. directory . : package ; packages import .; 1:

    Folder 1

    A11.javaA12.java

    Folder 1Folder 1

    A11.javaA12.java

    // A11.java // package Folder1:

    package Folder1; class A11 { Class Implementation..}

    // A12.java // package Folder1:

    package Folder1; class A12 { class implementation}

    2:

    Folder 2

    A21.javaA22.java

    Folder 2Folder 2

    A21.javaA22.java

  • Java 18

    // A21.java // package Folder2: package Folder2; class A21 { Class implementation} // A22.java // package Folder2 // 11.java package Folder2; import Folder1.A11; class A22 { Class implementation}

  • Java 19

    3. - - 3.1 JAVA

    JAVA C ( bytes) JAVA.

    Byte Byte 8-bit signed, -128..127 Short Short 16-bit signed

    Int 32-bit signed Long 64-bit signed Float (.

    ) 32-bit signed

    Double 64-bit signed Char unicode character 16-bit

    Boolean Boolean true or false

    3.2 , literals, ,

    JAVA A..Z, a..,z, 0..9, _, $, ( ) _ $, (0..9). JAVA. literals JAVA , , , . : Integer literals ( ) 324 // decimal 0xABCD // hexadecimal 032 // octal 2L // long decimal integer Float point literals ( ) 3.1415 // float 3.1E12 .1e12 2E12 2.0d or 2.0D //double 2.0f or 2.0F or 2.0 //float Boolean literals ( ) true, false // boolean Character literals () continuation \ // character literals new-line NL (LF) \n horrizontal tab HT \t back space BS \b carriage return CR \r form feed FF \f backslash \ \\ single quote ' \' double quote " \" octal bit pattern 0ddd \ddd hex bit pattern 0xdd \xdd unicode char 0xdddd \udddd

  • Java 20

    '\n' , '\23', 'a' String literals () "" \\ the empty string "\"" "This is a string" "This is a \ two-line string" JAVA . 1. /* */ C. 2. // // 3. /** */. /* */

    javadoc documentation. (separators) JAVA : + - ! % ^ & * | ~ / > < ( ) { } [ ] ; ? : , . = (SPACE), HT \t, LF \n . 3.3 :

    + - * /

    % ^

    :

    = >

    :

    != == ==

    :

    && KAI (AND) || H (OR) ! OXI (NOT)

  • Java 21

    , s ( ). . true false. :

    =

    O :

    ++ 1 -- 1

    ++ -- 1 .

    ++a; a=a+1; --a; a=a-1;

    ++ -- (. , ++a --a) (. , a++ a--). ++a a . a++ a . : o a 5 :

    a = 5;

    b = a++; b 5

    b=++a; b 6. a 6.

    += -= *= / /=

    %= a += b; a = a+b; a -= b; a = a-b; a *= b; a = a*b; a /= b; a = a/b; a %= b; a = a %b; bits :

  • Java 22

    & AND bit | OR bit ^ XOR bit ! bit

    >

    bits. &, |, ^ ~ Boole. >> > 2; b 00011010.

    . [ ] ( )

    ++ -- ! ~ instanceof * / %

    + - > >>>

    < > = == !=

    & ^ |

    && | | ? :

    = op= ,

    , * !=. .

    op= : += -= *= /= %= &= |= ^= = >>>= 3.4 (Strings) char c=A; (Strings) . Java String. String:

    String ntua=National Technical University of Athens; String ntua = new String("National Technical University of Athens");

  • Java 23

    println() :

    System.out.println(ntua); //

    System.out.println(National Technical University of Athens); //

    // print() :

    System.out.print(National); System.out.print( Technical ); System.out.println( University ); System.out.println( of ); System.out.println( Athens );

    String ntuaHMMY = ntua + HMMY Department; ntuaHMMY :

    National Technical University of Athens HMMY Department. : s1 s2.

    s1.length(); ( )

    s1 s2=s1.toUpperCase(); s1

    s2=s1.toLowerCase(); s1 s2.equals(s1) s1 s2

    int a=s2.indexOf(s1); To a s2 s1 >>

    3.5 C, JAVA block , . , ( ) C.

  • Java 24

    , , (if - else, for, while, do - while switch), C if-else, while, do-while , boolean . :

    while (1) {...} // while (true) {....} // Java. (control flow):

    Java

    if-else switch-case for while do-while

    Java . (exceptions) (exception handlers) . : break, continue return . . Java goto. break continue. if-else if ( ) . ( ). if : if () .. if (x!=0) { System.out.println("To x 0"); y = 1/x; } if else . if if if . if else :

  • Java 25

    if () --1 else --2 .. if (x!=0) { System.out.println(" x 0"); y=1/x; } else { System.out.println(" x 0"); y=0; } switch-case if switch-case : switch () { case -1: -1; [break;] case -: -; [break;] [default: ; [break;]] } switch-case . - . default . break , ( ) , break switch-case. , ( month) (year) : ... switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30;

  • Java 26

    break; case 2: if ( ((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0) ) numDays = 29; else numDays = 28; break; } ... for for . for . for . for : for (; ; ) ; 1 10: ... for (int i=1; i

  • Java 27

    int i=0; while (!found && i!=10) if (numbers[i++] == x) found = true; do-while . do-while while. do-while : do ; while (); do-while . . H do-while . , : ... int c; Reader in; ... do { c = in.read(); ... } while (c != 1); ... Java . : break, continue return break switch-case. break . while For.java : int i; boolean found = false; for (i=0; i

  • Java 28

    break continue (labeled break labeled continue) , . return , . - . return String name. getName( ) : return name; public String getName() { ... return name; } : return interest; interest; public int calculateInterest( ) { ... return interest; } 3.6

    JAVA : [] ; []; int[] nums; byte buff[]; float matrix[][]; // A a[]; B[] b; ( ). : = new [ ]; byte, short, int long. int[] ; = new int[200]; byte buff[] = new byte[1024]; A[] a = new A[4];

  • Java 29

    float matrix[][]; matrix = new float[30][]; matrix = new float[0][40]; ... matrix = new float[29][40]; : matrix = new float[30][40]; : a[2] = 5; matrix[0][8] = (float) (buff[19] + buff[25]); indexes 0 -1. compile-time run-time error. . : int[] give_ints() { int I[] = new int[3]; I[0] = I[1] = I[2] = 7; return I; } int give_ints() [] {....} void get_ints(int[] i) { i[0] = i[1]+i[2]; } void get_ints(int i[]) { ... } JAVA . () Array. , JAVA , ( Array), . : int a[]; - a. a[0], ... int . length . : a.length // if (a.length < 1024) {...} for (int i=0; i

  • Java 30

  • Java 31

    4. (Exceptions)

    JAVA , , (throw=) ! thread . (exception handlers) . runtime system, . , . . ( new) Exception . throw exception. throw . . , , , ( ), exception handler, ' . . class MyException extends Exception { } class MyClass { void oops() { if (/* no error occurred */) { ... } else { /* error occurred */ throw new MyException(); } } } (exception handler) try. try catch. catch , ( MyException). catch . : try { p.a = 10; } catch (NullPointerException e) { println("p was null"); } catch (Exception e) { println("other error occurred"); } catch (Object obj) { println("Who threw that object?"); } catch . try/catch. . . exception handler . , , , ( ), exception handler, throw . throw .

  • Java 32

    try { f.open(); } catch(Exception e) { f.close(); throw e; } , . finally. . try { // do something } finally { // clean up after it } : try { // do something } catch(Object e){ // clean up after it throw e; } // clean up after it finally try block return, break, continue throw. : try { if (a == 10) { return; } } finally { print("finally\n"); } print("after try\n"); "finally" "after try" a != 10.

  • Java 33

    5. Applets Java Java Applets Java WWW Browser. Applet WEB HTML tag. Browser WEB Applet, Browser Applet Web Server . Java Applets Java Browser, Browser: , , interface . Applets , Applets : Applets ,

    . Applets Server Applet

    . Applets

    . Applets Applet , Applet, java.applet : Public class myClass extends java.applet.Applet{ . . . . } Applet Applet Browser AWT User Interface , , . Applet , Applet Applet . 5.1 Applets Java , main(). , main() . Applets o Applet (. , , ). Browser . Applet Java . Applet ( method overriding) Applet . applet : 1. public void init(){ . . . } applet . , , font . 2. public void start(){ . . . }

  • Java 34

    init(). start() applet . applet HTML Applet . 3. public void stop(){ . . . } stop() Applet start(). stop Applet . stop() Threads Applet ( ) . 4. public void destroy(){ . . . } Applet ( , threads .). Applet Browser . Applet . 5. public void paint(Graphics g){ . . . } Applet . , , . Applet , Browser , animation . Applet - :

    import java.awt.Graphics

    5.2 Applets Web Applet : import java.awt.Graphics import java.awt.Font import java.awt.Color

    public class HelloSomeoneApplet extends java.applet.Applet{

    Font f = new Font(TimesRoman, Font.Bold, 36); String myname; public void init(){

    myname = getParameter(name); if (myname == null) myname=Laura; myname = Hello + myname + !;

    } public void paint(Graphics g){

    g.setFont(f); g.setColor(Color.red); g.drawString(Hello again!, 5,50);

  • Java 35

    } } HelloAgainApplet.class /classes. o HTML Applet : Applet Alignement Hello to whoever you are To the left of this paragraph is and applet of a small string in re type, set in 36 points Times bold. In the next part of this page, we demonstrate how under certain conditions, styrofoam peanuts can be used as a healthy snack. To Web Browser :

    Netscape: Applet Alignment

    0,0

    HELLO Bonzo! 50

    5

    60

    60

    10

    In the next part of this page, we demonstrate how under certain conditions, styrofoam peanuts can be used as a healthy snack.

    To the left of this paragraph is and applet of a small string in re type, set in 36 points Times bold.

    : Applet ,

    string myname name HTML .

    Applet Web tag BR CLEAR: T tag BR CLEAR

    CLEAR (CLEAR=LEFT, CLEAR=RIGHT, CLEAR=ALL).

  • Java 36

    tags Applet Web :

    CODE: Applet . CODEBASE: Applet

    . WIDTH HEIGHT:

    Applet . ALIGN: Applet Web.

    (LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTOM, ABSBOTOM). ALIGN=LEFT Applet .

    VSPACE HSPACE: pixels Applet .

    PARAM : Applet , Name VALUE .

    5.3 , , Graphics. , applet. (0,0) . .

    +

    0,0 + 5.3.1 Graphics Graphics applet . :

    import java.awt.Graphics : drawLine(startX, startY, width, height); drawRect(startX, startY, width, height); fillRect(startX, startY, width, height); drawRoundRect(startX, startY, width, height); fillRoundRect(startX, startY, width, height); draw3DRect(startX, startY, width, height, boolean value); fillRect(startX, startY, width, height, boolean value); drawPolygon(arrayX, arrayY, array length); fillPolygon(arrayX, arrayY, array length); drawPolygon(polygon object); fillPolygon(polygon object); drawOval(TopCornerX, TopCornerY, width, height);

  • Java 37

    fillOval(TopCornerX, TopCornerY, width, height); drawArc(TopCornerX, TopCornerY, width, height, arcStart, arcStop); fillArc(TopCornerX, TopCornerY, width, height, arcStart, arcStop); - copyArea(fromStartX, fromStartY, fromWidth, fromHeight, toStartX, toStartY); clearArea(fromStartX, fromStartY, fromWidth, fromHeight, toStartX, toStartY); : setFont(fontObject); strings : drawString(aString, atPointX, atPointY); getFont(); setColor(colorObject); getColor(); 5.3.2 Fonts Fonts applet . :

    import java.awt.Fonts Font Font : Font f = new Font(TimesRoman, Font.BOLD, 24); Font.PLAIN, Font.BOLD, Font.ITALIC ( FontBold + FontItalic). Font :

    getName(); getSize(); getStyle(); isPlain; isBold; isItalic();

    ( , ) FontMetrics ( API Java Decumentation Sun). 5.3.3 Color Color applet . :

    import java.awt.Color Color Color: Color c = new Color(redValue, greenValue, blueValue); , , 0 255. Color , Color (Color.white, Color.black, Color.lightGray, Color.gray, Color.darkGray, Color.red, Color.green, Color.blue, Colror.yellow, Color.magenta, Color.cyan, Color.pink, Color.orange).

  • Java 38

    o Background Foreground applet Applet :

    setBackground(colorObject); setForeground(colorObject); getBackground(); getForeground();

    5.3.4 - - applet ) ( ), ) ( ) ) ( ). ) import java.awt.Graphics; public class Lamp extends java.applet.Applet{

    public void paint (Graphics g){ // the lamp platform g.fillRect(0,250,290,290); // the base of the lamp g.drawLine(125, 250, 125, 160); g.drawLine(175,250,175,160); // the lamp shade, top and bottom edges g.drawArc(85,157,130,50,-65,312); g.drawArc(85,87,130,50,62,58); // lamp shade, shides g.drawLine(85,177,119,89); g.drawLine(215, 177,181,89); //dots on the shade g.fillArc(78,120,40,40,63,-174); g.fillOval(120,96,40,40); g.fillArc(173,100,40,40,110,180);

    } }

    ) import java.awt.Font; import java.awt.Graphics;

  • Java 39

    public class ManyFonts extends java.applet.Applet{

    public void paint (Graphics g){ Font f = new Font(TimesRoman, Font.PLAIN, 18); Font fb = new Font(TimesRoman, Font.BOLD, 18); Font fi = new Font(TimesRoman, Font.ITALIC, 18); Font fbi = new Font(TimesRoman, Font.BOLD + Font.ITALIC, 18); g.setFont(f); g.drawString(This is a plain font, 10, 25); g.setFont(fb); g.drawString(This is a bold font, 10, 50); g.setFont(fi); g.drawString(This is an italic font, 10, 75); g.setFont(fbi); g.drawString(This is a bold and italic font, 10, 100);

    } }

    ) import java.awt.Graphics; import java.awt.Color; public class ColorBoxes extends java.applet.Applet{

    public void paint (Graphics g){ int rval, gval, bval; for(int j = 30; j< (size().height -25); j += 30) //rows

    for (int I = 5; I < (size().width -25); I += 30){ // columns rval = (int)Math.floor(Math.random() * 256); gval = (int)Math.floor(Math.random() * 256); bval = (int)Math.floor(Math.random() * 256); g.setColor(new Color(rval,gval,bval)); g.fillRect(I, j, 25, 25); g.setColor(Color.Black); g.fillRect(I-1, j-1, 25, 25);

    } }

    }

  • Java 40

  • Java 41

    6. Threads Java threads . multithreading languages. process () . process thread . multithreading process threads ( lightweight processes) . processes process. 6.1 Threads SimpleThread TwoThreadsTest: class SimpleThread extends Thread { public SimpleThread(String str) { super(str); } public void run() { for (int i = 0; i < 10; i++) { System.out.println(i + " " + getName()); try { sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println("DONE! " + getName()); } } class TwoThreadsTest { public static void main (String[] args) { new SimpleThread("Jamaica").start(); new SimpleThread("Fiji").start(); } } simpleThread constructor string. cunstructor constructors hread String Thread . run. H run thread thread. H twoThreads main threads Jamaica Fiji. H main thread start. To :

    0 Jamaica 0 Fiji

    1 Fiji 1 Jamaica 2 Jamaica 2 Fiji 3 Fiji

  • Java 42

    3 Jamaica 4 Jamaica 4 Fiji 5 Jamaica 5 Fiji 6 Fiji 6 Jamaica 7 Jamaica 7 Fiji 8 Fiji 9 Fiji 8 Jamaica DONE! Fiji 9 Jamaica DONE! Jamaica . threads, , 10 . Thread java.lang import 6.2 Threads Thread run Thread. Thread run. ( animation loop ). run Thread : Thread (overriding) run

    Thread . simpleThread .

    Runnable interface. Thread - Runnable interface. To Threads.

    6.3 Threads Applets Applet Clock . applet Runnable interface run Thread . Thread ( , scroll ). Java ( ), Clock Thread Applet. Clock Runnable interface Threads. import java.awt.Graphics; import java.util.Date; public class Clock extends java.applet.Applet implements Runnable {

  • Java 43

    Thread clockThread = null; public void start() { if (clockThread == null) { clockThread = new Thread(this, "Clock"); clockThread.start(); } } public void run() { // loop terminates when clockThread is set to null in stop() while (Thread.currentThread() == clockThread) { repaint(); try { clockThread.sleep(1000); } catch (InterruptedException e){ } } } public void paint(Graphics g) { Date now = new Date(); g.drawString(now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds(), 5, 10); } public void stop() { clockThread = null; } } H start() clockThread null.

    Clock Applet . thread. :

    clockThread = new Thread(this, "Clock"); this Clock Applet, Runnable interface, Thread .

    stop() clockThread null. run() Thread . clockThread.stop() run() .

    H run() Clock Applet. repaint() paint() .

  • Java 44

    6.4 Threads H java monitors . synchnonized monitor. monitor thread synchronized . synchronized thread synchronized thread. -synchronized . synchronized . thread synchronized wait(). thread wait monitor . thread synchronized , notify(), thread wait monitor . thread, , thread synchronized - monitor . thread , - . notifyAll(), threads wait monitor . wait(), notify(), notifyAll() java.lang.Object. Producer/Consumer . Producer 0 9 (), CubbyHole, . , o Producer 0 100 . Consumer, CubbyHole ( Producer ) . threads , get() put() CubbyHole. //******************************* // Class Producer.java //******************************* public class Producer extends Thread { private CubbyHole cubbyhole; private int number; public Producer(CubbyHole c, int number) { cubbyhole = c; this.number = number; } public void run() { for (int i = 0; i < 10; i++) { cubbyhole.put(i); System.out.println("Producer #" + this.number + " put: " + i); try { sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) { } } } }

  • Java 45

    //* // Class Consumer.java //* public class Consumer extends Thread { private CubbyHole cubbyhole; private int number; public Consumer(CubbyHole c, int number) { cubbyhole = c; this.number = number; } public void run() { int value = 0; for (int i = 0; i < 10; i++) { value = cubbyhole.get(); System.out.println("Consumer #" + this.number + " got: " + value); } } } //******************************* // Class CubbyHole.java //******************************* public class CubbyHole { private int contents; private boolean available = false; public synchronized int get() { while (available == false) { try { wait(); } catch (InterruptedException e) { } } available = false; System.out.println("in get"); notifyAll(); return contents; } public synchronized void put(int value) { while (available == true) { try { wait(); } catch (InterruptedException e) { } } contents = value; available = true; System.out.println("in gut"); notifyAll(); } } //*******************************

  • Java 46

    // Class ProducerConsumerTest.java //******************************* public class ProducerConsumerTest { public static void main(String[] args) { CubbyHole c = new CubbyHole(); Producer p1 = new Producer(c, 1); Consumer c1 = new Consumer(c, 1); p1.start(); c1.start(); } } To ProducerConsumerTest :

    . . . Consumer #1 got: 3 Producer #1 put: 4 Producer #1 put: 5 Consumer #1 got: 4 . . .

    6.5 Threads To thread . stop,suspend resume (deprecated) . (flag) thread .

    born

    ready

    running

    waiting sleeping blockedsuspended

    or no

    tifyA

    ll

    notif

    y dispatch(assign aprocessor)

    quantumexpiration

    yieldinterrupt

    I/O completion

    start

    resumesleep interval

    expires

    suspendsle

    ep

    issue I/O request

    wait

    dead

    stop complete

    born

    ready

    running

    waiting sleeping blockedsuspended

    or no

    tifyA

    ll

    notif

    y dispatch(assign aprocessor)

    quantumexpiration

    yieldinterrupt

    I/O completion

    start

    resumesleep interval

    expires

    suspendsle

    ep

    issue I/O request

    wait

    dead

    stop complete

  • Java 47

  • Java 47

    7. Abstract Windowing Toolkit (AWT)

    7.1 GUI Graphical User Interface-GUI ( ) , . GUI GUI-components. GUI-components java.awt (Abstract Windowing Toolkit) package. Component Container. Component Component. Container Container. GUI-components : Label . Button (event) . TextField . TextField

    . TextArea . TextArea

    TextField .

    Choice .

    Checkbox boolean component . Radio buttons ( ).

    List . action event.

    Panel container component .

    ScrollPane container component, Panel, Scrollbars component .

    GUI-components GUI.

    BorderLayout

    java.lang.Object

    CheckboxGroup

    Component

    FlowLayout

    GridLayout

    TextComponent

    Button

    Label

    Checkbox

    List

    Choice

    Container

    TextField

    java.applet.Applet

    TextArea

    Window

    ScrollPane

    Frame

    Panel

    BorderLayout

    java.lang.Object

    CheckboxGroup

    Component

    FlowLayout

    GridLayout

    TextComponent

    Button

    Label

    Checkbox

    List

    Choice

    Container

    TextField

    java.applet.Applet

    TextArea

    Window

    ScrollPane

    Frame

    Panel

  • Java 48

    Component . Component paint repaint Applets. applet ax2+bx+c=0, .

    init applet GUI components (TextField, Label, Button, Panel ScrollPane).

    // EQuation applet import java.applet.*; import java.awt.*; import java.awt.event.*; public class eq extends java.applet.Applet { // GUI components TextField tfA, tfB, tfC, tfD, tfX1, tfX2; Button btSolve, btClear; Panel p; ScrollPane sp; public void init() { // GUI components.

    // . p = new Panel(); sp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); tfA = new TextField(); tfB = new TextField(); tfC = new TextField(); tfD = new TextField(); tfX1 = new TextField(); tfX2 = new TextField(); btSolve = new Button("Solve"); btClear = new Button("Clear"); tfD.setEditable(false);

  • Java 49

    tfX1.setEditable(false); tfX2.setEditable(false); } }

  • Java 50

    7.2 GUI GUIs ( Paint Windows - GUI , , ) . , , GUI Java, Panel components. Panel Container Applet Panel. Panels Applets Containers Components, Panel. Panel . GUI component hierarchy containment hierarchy. Panel Components (layout). Java (Layout Managers) Component Applet Panel. Layout Managers : FlowLayout default Layout Manager Applets Panels.

    Component BorderLayout Component : , , ,

    (North, South, East, West, Center). GridLayout Component

    ( ). CardLayout Component . Container

    Layout Manager. Container .

    GridBagLayout GridLayout Manager. Component ( ). Component GridBagLayout Manager .

    component hierarchy Layout Managers. init .

    // GUI components Panel. // 1 p.setLayout(new GridLayout(5,4, 5,5)); p.add(new Label("")); p.add(new Label("EQuation")); p.add(new Label("Applet")); p.add(new Label("")); // 2 p.add(new Label("Factor a")); p.add(tfA); p.add(new Label("Determinator D")); p.add(tfD); // 3 p.add(new Label("Factor b"));

  • Java 51

    p.add(tfB); p.add(new Label("Root X1")); p.add(tfX1); // 4 p.add(new Label("Factor c")); p.add(tfC); p.add(new Label("Root X2")); p.add(tfX2); // 5 p.add(new Label("")); p.add(btSolve); p.add(btClear); p.add(new Label("")); // component hierarchy. // Panel p ScrollPane sp. // sp applet. sp.add(p); sp.doLayout(); setLayout(new BorderLayout()); add(sp, BorderLayout.CENTER);

    applet ( 29). 7.3 GUI (GUI Events) Java Windows. GUI event, AWTEvent. AWTEvent java.awt.event. java.awt.event.

    java.lang.Object ActionEvent

    AdjustmentEvent

    ItemEvent

    ComponentEvent

    KeyEvent MouseEvent

    FocusEvent

    Class name

    Interface name

    Key

    java.util.EventObject

    java.awt.AWTEvent

    ContainerEvent

    PaintEvent

    WindowEvent

    InputEvent

  • Java 52

    event :

    ) (event listener) events. B) (event handler) events .

    event listener , event-listener interface java.awt.event. event-listener interfaces java.awt.event.

    java.lang.Object ActionListener

    AdjustmentListener

    ItemListener

    ComponentListener

    FocusListener

    Class name

    Interface name

    Key

    java.util.EventListener

    ContainerListener

    KeyListener

    MouseListener

    MouseMotionListener

    TextListener

    WindowListener event-listener interface event handler . event

    handler . event listener ( ) event

    handler event-listener interfaces . event listener ,

    events GUI-Components - o event , event handler event.

  • Java 53

    , (event listeners) Buttons Solve Clear. init layout component hierarchy.

    class Solve implements ActionListener() { public void actionPerformed(ActionEvent ae) { try { double a,b,c,d,x1,x2,sqrtd; a=(new Double(tfA.getText())).doubleValue(); b=(new Double(tfB.getText())).doubleValue(); c=(new Double(tfC.getText())).doubleValue(); d = b*b-4*a*c; tfD.setText(Double.toString(d)); if (d>0) { sqrtd = Math.sqrt(d); x1 = (-b-sqrtd)/(2d*a); x2 = (-b+sqrtd)/(2d*a); tfX1.setText(Double.toString(x1)); tfX2.setText(Double.toString(x2)); } else if (d==0) { x1 = x2 = -b/(2d*a); tfX1.setText(Double.toString(x1)); tfX2.setText(Double.toString(x2)); } else { tfX1.setText("Error"); tfX2.setText("Negative D"); } } catch (Exception e) { tfD.setText(e.getMessage()); } } } btSolve.addActionListener(new Solve( ) );

    class Clear implements ActionListener() { public void actionPerformed(ActionEvent ae) { tfA.setText(""); tfB.setText(""); tfC.setText(""); tfD.setText(""); tfX1.setText(""); tfX2.setText(""); } }

  • Java 54

    btClear.addActionListener(new Clear( ) );

    on the fly . inline . components event component. inline - : someComponent.addSomeEventListener( new SomeEventListener() { // - public void someEventMethod( ) //Overrided { Event method implementation here } } ); inline , Buttons Solve Clear :

    btSolve.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { try { double a,b,c,d,x1,x2,sqrtd; a=(new Double(tfA.getText())).doubleValue(); b=(new Double(tfB.getText())).doubleValue(); c=(new Double(tfC.getText())).doubleValue(); d = b*b-4*a*c; tfD.setText(Double.toString(d)); if (d>0) { sqrtd = Math.sqrt(d); x1 = (-b-sqrtd)/(2d*a); x2 = (-b+sqrtd)/(2d*a); tfX1.setText(Double.toString(x1)); tfX2.setText(Double.toString(x2)); } else if (d==0) { x1 = x2 = -b/(2d*a); tfX1.setText(Double.toString(x1)); tfX2.setText(Double.toString(x2)); } else { tfX1.setText("Error"); tfX2.setText("Negative D"); } } catch (Exception e) { tfD.setText(e.getMessage()); } } });

  • Java 55

    btClear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { tfA.setText(""); tfB.setText(""); tfC.setText(""); tfD.setText(""); tfX1.setText(""); tfX2.setText(""); } });

    7.4 Adapter Classes event listener interface . , interface, adapter . event listener interface adapter . adapter : MouseAdapter interface MouseListener, MouseMotionAdapter interface MouseMotionListener, MouseMotionAdapter interface MouseMotionAdapterListener . 7.5 applet EQ EQ applet stand-alone application main( ).

    import java.applet.*; import java.awt.*; import java.awt.event.*; public class eq extends java.applet.Applet { TextField tfA, tfB, tfC, tfD, tfX1, tfX2; Button btSolve, btClear; Panel p; ScrollPane sp; public void init() { setBackground(SystemColor.control); p = new Panel(); sp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); tfA = new TextField(); tfB = new TextField(); tfC = new TextField();

  • Java 56

    tfD = new TextField(); tfX1 = new TextField(); tfX2 = new TextField(); btSolve = new Button("Solve"); btClear = new Button("Clear"); tfD.setEditable(false); tfX1.setEditable(false); tfX2.setEditable(false); p.setLayout(new GridLayout(5,4, 5,5)); p.add(new Label("")); p.add(new Label("EQuation")); p.add(new Label("Applet")); p.add(new Label("")); p.add(new Label("Factor a")); p.add(tfA); p.add(new Label("Determinator D")); p.add(tfD); p.add(new Label("Factor b")); p.add(tfB); p.add(new Label("Root X1")); p.add(tfX1); p.add(new Label("Factor c")); p.add(tfC); p.add(new Label("Root X2")); p.add(tfX2); p.add(new Label("")); p.add(btSolve); p.add(btClear); p.add(new Label("")); sp.add(p); sp.doLayout(); setLayout(new BorderLayout()); add(sp, BorderLayout.CENTER); btSolve.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { try { double a,b,c,d,x1,x2,sqrtd; a=(new Double(tfA.getText())).doubleValue();

  • Java 57

    b=(new Double(tfB.getText())).doubleValue(); c=(new Double(tfC.getText())).doubleValue(); d = b*b-4*a*c; tfD.setText(Double.toString(d)); if (d>0) { sqrtd = Math.sqrt(d); x1 = (-b-sqrtd)/(2d*a); x2 = (-b+sqrtd)/(2d*a); tfX1.setText(Double.toString(x1)); tfX2.setText(Double.toString(x2)); } else if (d==0) { x1 = x2 = -b/(2d*a); tfX1.setText(Double.toString(x1)); tfX2.setText(Double.toString(x2)); } else { tfX1.setText("Error"); tfX2.setText("Negative D"); } } catch (Exception e) { tfD.setText(e.getMessage()); } } }); btClear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { tfA.setText(""); tfB.setText(""); tfC.setText(""); tfD.setText(""); tfX1.setText(""); tfX2.setText(""); } }); } //end of init() method public Insets getInsets() { Insets i = super.getInsets(); return new Insets(i.top+10, i.left+10,

    i.bottom+10, i.right+10); } public void paint(Graphics g) { Dimension dim = getSize(); g.setColor(Color.lightGray);

  • Java 58

    g.draw3DRect(3, 3, dim.width-9, dim.height-9, false); g.draw3DRect(4, 4, dim.width-11, dim.height-11, true); } public static void main(String args[]) { Frame fr = new Frame("EQ"); eq eq = new eq(); Button btClose = new Button("Close"); Panel p2 = new Panel(); eq.init(); eq.start(); p2.setLayout(new FlowLayout(FlowLayout.CENTER)); p2.add(btClose); fr.setBackground(SystemColor.control); fr.setLayout(new BorderLayout()); fr.add(eq, BorderLayout.CENTER); fr.add(p2, BorderLayout.SOUTH); // fr.pack(); fr.setSize(300, 150); fr.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { Frame src = (Frame)we.getSource(); Applet appl=(Applet)src.getComponent(0); appl.stop(); appl.destroy(); src.setVisible(false); src.dispose(); System.exit(0); } }); btClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { System.exit(0); } }); fr.setVisible(true); } }

  • Java 59

    8. Swing (Swing GUIs) javax.swing GUI. javax.swing Abstract Windows Toolkit (AWT). , JButton , AWT Button , .

    8.1 Top-Level Swing Containers Swing Components Swing top-level Swing container. top-level Swing container Swing components . top-level Swing containers: JFrame, JDialog, ( applets) JApplet. JFrame , JDialog ( ). JApplet applet Web Browser. top-level Swing containers :

    Jframe

    JDialog

    JApplet

    top-level containers, JFrame, Swing components JComponent. H JComponent :

    java.lang.Object

    java.awt.Component

    Java.awt.Container

    java.swing.JComponent

    java.lang.Object

    java.awt.Component

    Java.awt.Container

    java.swing.JComponent

  • Java 60

    swing Containers Components

    Top-Level Containers Container Swing .

    Applet

    Dialog

    Frame

    General-Purpose Containers Container .

    Panel

    Scroll pane

    Split pane

    Tabbed pane

    Tool bar

    Special-Purpose Containers Container GUI.

  • Java 61

    Internal frame

    Layered pane

    Root pane

    Basic Controls Component , .

    Buttons Combo box

    List

    Menu

    Slider

  • Java 62

    Spinner

    Text field or Formatted text field Uneditable Information Displays Component .

    Label

    Progress bar

    Tool tip

    Interactive Displays of Highly Formatted Information Component ( ) .

    Color chooser File chooser

    Table

    Text

    Tree

  • Java 63

    Swing

    Swing :

    JFrame JPanel JButton

    Swing Components . , GUI Swing, JFrame (layout) . JPanels Jframe. JPanels layout JFrames. , Component. . import java.lang.*; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; class SimpleGui1 { public static void main(String args[]) { // Let's make a button first. JButton btn = new JButton("Click Me!"); btn.setMnemonic(KeyEvent.VK_C); // Now you can hit the button with // Alt-C. // Let's make the panel with a flow layout. // Flow layout allows the components to be // their preferred size. JPanel pane = new JPanel(new FlowLayout()); pane.add(btn); // Add the button to the pane. // Now for the frame JFrame fr = new JFrame(); fr.setContentPane(pane); // Use our pane as the default pane fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Exit program //when frame is closed. fr.setLocation(200, 200); // locate Frame at (200, 200). fr.pack(); // Frame is ready. Pack it up for // display. fr.setVisible(true); // Make it visible. } } :

  • Java 64

    JButton, JPanel, JFrame ( JAVA PI ). , , "" .

    8.2 - Event Handlers component (JButton ) (ButtonListener). , ( ). AWT Component. JButton : import java.lang.*; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; class SimpleGui1 { public static void main(String args[]) { // Let's make a button first. JButton btn = new JButton("Click Me!"); btn.setMnemonic(KeyEvent.VK_C); // Now you can hit the button with // Alt-C. btn.addActionListener(new ButtonListener()); // Allow the button // to disable itself // Let's make the panel with a flow layout. // Flow layout allows the components to be // their preferred size. JPanel pane = new JPanel(new FlowLayout()); pane.add(btn); // Add the button to the pane. // Now for the frame JFrame fr = new JFrame(); fr.setContentPane(pane); // Use our pane as the default pane fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Exit program //when frame is closed. fr.setLocation(200, 200); // locate Frame at (200, 200). fr.pack(); // Frame is ready. Pack it up for // display. fr.setVisible(true); // Make it visible. }

  • Java 65

    // Button event handler static class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { btn.setEnabled(false); // Disable the button } } } . , , :

    Swing components (events). .

    Some Events and Their Associated Event Listeners Act that Results in the Event Listener Type User clicks a button, presses Enter while typing in a text field, or chooses a menu item ActionListener

    User closes a frame (main window) WindowListener User presses a mouse button while the cursor is over a component MouseListener

    User moves the mouse over a component MouseMotionListener Component becomes visible ComponentListener Component gets the keyboard focus FocusListener Table or list selection changes ListSelectionListener Any property in a component changes such as the text on a label PropertyChangeListener

    8.3 Swing Threads H AWT Swing GUI Threads. AWT threads (thread safe) swing . Threads synchnonized Java o threads . AWT . (deadlocks) (. buttons, panels, ) . swing thread-safe. Swing thread

  • Java 66

    event-dispatching thread. event handler event handler. (deadlock), Swing components , event-dispatching thread. 8.3.1 invokeLater invokeLater thread event-dispatching thread . run Runnable Runable invokeLater. invokeLater event-dispatching thread. invokeLater: Runnable updateAComponent = new Runnable() { public void run() { component.doSomething(); } }; SwingUtilities.invokeLater(updateAComponent); GUI event-dispatching thread invokeLater. Swing GUI event-dispatching thread invokeLater. invokeLater invokeAndWait import java.lang.*; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; class SimpleGui1 { private static JButton btn = null; public static void createAndShowGUI() { // Let's make a button first. btn = new JButton("Click Me!"); btn.setMnemonic(KeyEvent.VK_C); // Now you can hit the button with // Alt-C. btn.addActionListener(new ButtonListener()); // Allow the button // to disable itself // Let's make the panel with a flow layout. // Flow layout allows the components to be // their preferred size. JPanel pane = new JPanel(new FlowLayout()); pane.add(btn); // Add the button to the pane.

  • Java 67

    // Now for the frame JFrame fr = new JFrame(); fr.setContentPane(pane); // Use our pane as the default pane fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Exit program //when frame is closed. fr.setLocation(200, 200); // locate Frame at (200, 200). fr.pack(); // Frame is ready. Pack it up for // display. fr.setVisible(true); // Make it visible. } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } // Button event handler static class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { btn.setEnabled(false); // Disable the button } } }

  • Java 68

  • Java 69

    9. Animation Java 9.1 Animation

    Java Java applet , animation.

    animation . animation. animation: 1. multi-frame animation.

    (frames) ( animation 10-20 frames ). (cartoons).

    2. . ( sprite) (background). . sprite frames, background. , , (sprite) (transparent) background . format GIF 89 Compuserve.

    9. 2 animation loop

    animation , (animatin loop), animation. Java thread. paint() update() java.awt.Component , AWT thread (event handling) . animation loop run() thread animation. paint() frame ( ).

    animation loop. frameNumber, frame ( frame) delay, msec ( ) frames. frame animation loop, repaint() java.awt.Component. paint() ( paint() frame) frame.

    public void run() { while (true) { // animation frame . frameNumber++;

  • Java 70

    // . repaint(); // delay msec. try {Thread.sleep(delay); } catch (InterruptedException e) {} }

    9.3. animation

    Applet multi-frame

    animation, animation loop . , Java animation. .

    import java.awt.*; import java.applet.Applet; // applet Runnable interface // threads. public class AnimatorApplet extends Applet implements Runnable { int frameNumber = -1; // frames int delay; // msec // Thread animation Thread animatorThread; public void init() { // 100msec frames delay=100; } public void start() { // Thread animation if (animatorThread == null) { animatorThread = new Thread(this); } // Thread animation animatorThread.start(); } } public void stop() { // hread animation animatorThread = null; } // animation loop. public void run() { //animation loop

  • Java 71

    while (Thread.currentThread() == animatorThread) { // frame frameNumber++; // frame repaint(); // msec try {Thread.sleep(delay) } catch (InterruptedException e) { break; } } } // paint() frame. public void paint(Graphics g) { // string // frame g.drawString("Frame " + frameNumber, 0, 30); // , frame } }

    9.4.

    animation: Frame i, i frame. , . string ( string - ), .

    flashing flickering (smooth, flicker free) animation.

    screen flickering : repaint() animation loop, frame, repaint(), background paint() . , background frame (refresh rate) . ( background frame) ( frame , , background). animation flickering (smooth) animation. update().

    Abstract Windowing Toolkit (AWT) package Java (Applet, Canvas, Frame) update()

  • Java 72

    . , update() clearRect() background paint() . update() : background . animation loop flickering. background frame. update() paint() ( background). , update frame, - frame. buffer . (offscreen) frame o . frame , frame frame . frame , . , frame . Java, buffer (offImage) Image createImage() java.awt.Component. , Graphics (offGraphics) Image getGraphics(). , update() . frame drawImage() update().

    Applet smooth animation. : import java.awt.*; import java.applet.Applet; public class ImageSequence extends Applet implements Runnable { int frameNumber = -1; int delay; Thread animatorThread; boolean frozen = false; Dimension offDimension; Image offImage; Graphics offGraphics; Image[] images; public void init() { String str; int fps = 10; // milliseconds frames; str = getParameter("fps"); try {

  • Java 73

    if (str != null) { fps = Integer.parseInt(str); } } catch (Exception e) {} delay = (fps > 0) ? (1000 / fps) : 100; // . images = new Image[10]; for (int i = 1; i

  • Java 74

    // long startTime = System.currentTimeMillis(); //animation loop. while (Thread.currentThread() == animatorThread) { frameNumber++; repaint(); // try { startTime += delay; Thread.sleep(Math.max(0, startTime-System.currentTimeMillis())); } catch (InterruptedException e) { break; } } } public void paint(Graphics g) { update(g); } // update() // // background . // backround // frame. // // public void update(Graphics g) { Dimension d = size(); // if ( (offGraphics == null) || (d.width != offDimension.width) || (d.height != offDimension.height) ) { offDimension = d; offImage = createImage(d.width, d.height); offGraphics = offImage.getGraphics(); } // frame, offGraphics.setColor(getBackground()); offGraphics.fillRect(0, 0, d.width, d.height); offGraphics.setColor(Color.black); // frame offGraphics.drawImage(images[frameNumber % 10], 0, 0, this); // g.drawImage(offImage, 0, 0, this); }

  • Java 75

    }

  • Java 75

    10. / - Streams , , , , , . ( ), ( ) . 10.1 Java, , , ( file system ) ( device ), Streams. stream . , . Java streams, . streams / InputStream OutputStream, . streams DataInputStream DataOutputStream , , - Java , ( ) . , - Java. , DataInputStream DataOutputStream Unicode ( string ), UTF-8. streams, ( file buffers ), , / ( / ). BufferedInputStream BufferedOutputStream ( ) . buffered stream, buffer stream. , , flush buffers, buffer ( file system ). , file system, FileInputStream FileOutputStream , . 10.2 System Java applet , import , System. , /. System.in, InputStream stream ( ). stream , , modem, . stream , . strings, ( integer ) , bytes. string : public class InputTest() { String str;

  • Java 76

    public static void main(String args[]) { str = System.in.getln(); } } 10.3 System , streams. , , standard output, . monitor, , , , . System System.out OutputStream. To , , standard output. public class InputTest() { String str; public static void main(String args[]) { str = System.in.getln(); System.out.println(str); } } : applet, .. Netscape Navigator, standard Java Console Netscape, , ( command line ). 10.4 DataInputStream DataInputStream. Constructor : public DataInputStream(InputStream in) data input stream input stream .

    : in - input stream. : read(byte[])

    byte.length bytes data input stream, bytes

    readBoolean() boolean data input stream. readByte() 8-bit data input stream.

  • Java 77

    readChar() Unicode data input stream. readFloat() float data input stream. readInt() 32-bit ( integer ) data input stream. readLine() data input stream. readLong() 64-bit ( integer ) data input stream. 10.5 DataOutputStream DataOutputStream. Constructor : public DataOutputStream(OutputStream out) data output stream output stream . : out - output stream. : flush() , . output stream. buffer. size() bytes data output stream. writeChar(int) stream 2-byte , byte, . writeDouble(double) double long doubleToLongBits Double long stream 8-byte , byte, . writeInt(int) ( int ) stream bytes, byte, .

  • Java 78

    11. Java 11.1 Uniform Resource Locator (URL) ( World Wide Web ), URL, HTML Web. , : : URL Uniform Resource Locator ( ) Internet. ( ) URL, , URLs . URL ... Internet : http://www.ntua.gr . URL, , : ( protocol identifier ) , .. http / ( resource name ), .. //www.ntua.gr . To protocol identifier , . , http ( hypertext documents ). ftp , news , file gopher. Internet. H , : host : . ( filename ) : , host. ( port number ) : (

    ). ( reference ) : . , , . To java.net URL, URL . 11.1.1 URL (relative) URL URL. specifications URL HTML . L JoesHomePage.html. links , PicturesOfMe.html MyKids.html, directory JoesHomePage.html. links PicturesOfMe.html MyKids.html JoesHomePage.html :

    Pictures of Me Pictures of My Kids

    URL URL, URL ( JoesHomePage.html). Java, URL specification URL.

  • Java 79

    , URL gamelan site:

    http://www.gamelan.com/pages/Gamelan.game.html http://www.gamelan.com/pages/Gamelan.net.html

    URL URL: http://www.gamelan.com/pages/ :

    URL gamelan = new URL("http://www.gamelan.com/pages/"); URL gamelanGames = new URL(gamelan, "Gamelan.game.html"); URL gamelanNetwork = new URL(gamelan, "Gamelan.net.html");

    snippet URL URL URL ( ) specification URL. :

    URL(URL baseURL, String relativeURL)

    URL URL. String resource . URL , () URL URL specification. , URL URL specification URL. URL (anchors) . Gamelan.net.html BOTTOM . URL, URL :

    URL gamelanNetworkBottom = new URL(gamelanNetwork, "#BOTTOM");

    11.1.2 URL class URL URL . URL, HTTP URLs, host, , resource name portion URL. string URL specification, URL. network browsing panel browsing panel , host, . panel URL. URL , host . URL Gamelan.net.html site Gamelan:

    new URL("http", "www.gamelan.com", "/pages/Gamelan.net.html"); :

    new URL("http://www.gamelan.com/pages/Gamelan.net.html"); , host path . forward slash . host.

  • Java 80

    URL :

    URL gamelan = new URL("http", "www.gamelan.com", 80, "pages/Gamelan.net.html"); URL URL:

    http://www.gamelan.com:80/pages/Gamelan.net.html URL , toString() toExternalForm() URL, String . 11.1.3 MalformedURLException URL MalformedURLException . , URL try/catch pair, : try { URL myURL = new URL(. . .) } catch (MalformedURLException e) { . . . // exception handler code here . . . } URLs '' '' . URL , ( )(, host, ). 11.1.4 URL URL, () , : getProtocol() String . getHost() String host. getPort()

    (integer) (port). port number URL -1.

    getFile() String filename. getRef() URL. getXXX , URL URL. URL class, , URLs. ,

  • Java 81

    URL . URL string URL: import java.net.*; import java.io.*; public class ParseURL { public static void main(String[] args) throws Exception { URL aURL = new URL("http://java.sun.com:80/docs/books/tutorial/intro.html#DOWNLOADING"); System.out.println("protocol = " + aURL.getProtocol()); System.out.println("host = " + aURL.getHost()); System.out.println("filename = " + aURL.getFile()); System.out.println("port = " + aURL.getPort()); System.out.println("ref = " + aURL.getRef()); } } : protocol = http host = java.sun.com filename = /docs/books/tutorial/intro.html port = 80 ref = DOWNLOADING 11.1.5 URL URL, openStream() stream, . , openStream() , Java.io.InputStream , URL, , streams, streams. , . , HTML. import java.net.*; import java.io.*; class OpenStreamTest {

    public static void main(String args[]) { try { DataInputStream in = new DataInputStream(System.in); DataInputStream dis; String inputLine; String address; // Get the address from the user. System.out.print(Give the address : ); address = in.readLine(); URL adr = new URL(address); dis = new DataInputStream(adr.openStream()); while ((inputLine = dis.readLine()) != null) { System.out.println(inputLine); }

  • Java 82

    dis.close(); } catch (MalformedURLException me) { System.out.println("MalformedURLException: "+ me); } catch (IOException ioe) { System.out.println("IOException: " + ioe); }

    } // End of main() } // End of class , , , URL, ( query ), cgi-script. 11.1.6 URL URL openConnection. , Java URL . ... : try { URL ntua = new URL("http://www.ntua.gr"); ntua.openConnection(); } catch (MalformedURLException e) { // new URL() failed . . . } catch (IOException e) { // openConnection() failed . . . } openConnection URLConnection, , , URL URLConnection. , openConnection . 11.1.7 URLConnection input stream URL, (connection) URL input stream , . BufferedReader input stream, . import java.net.*; import java.io.*; public class URLConnectionReader { public static void main(String[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/"); URLConnection yc = yahoo.openConnection(); BufferedReader in = new BufferedReader( new InputStreamReader( yc.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine);

  • Java 83

    in.close(); } } URLConnection URL URLConnection . 11.1.8 URLConnection HTML , (server). , Web browser URL , cgi-bin script, , (server) , , HTML . cgi-bin scripts POST , URL posting url. Java cgi-scripts , URL, . : URL. URL. URLConnection. (stream) . stream

    stream cgi-bin script . stream . stream .

    Hassan Schroeder, JAVA, cgi-bin script, backwards site:

    http://java.sun.com/cgi-bin/backwards. , . , script , backwards . string standard , standard . : string=string_to_reverse, string_to_reverse string . import java.io.*; import java.net.*; public class Reverse { public static void main(String[] args) throws Exception { if (args.length != 1) { System.err.println("Usage: java Reverse string_to_reverse"); System.exit(1); } String stringToReverse = URLEncoder.encode(args[0]); URL url = new URL("http://java.sun.com/cgi-bin/backwards"); URLConnection connection = url.openConnection(); connection.setDoOutput(true); PrintWriter out = new PrintWriter(connection.getOutputStream());

  • Java 84

    out.println("string=" + stringToReverse); out.close(); BufferedReader in = new BufferedReader( new InputStreamReader( connection.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } } .

    if (args.length != 1) { System.err.println("Usage: java Reverse " + "string_to_reverse"); System.exit(-1); } String stringToReverse = URLEncoder.encode(args[0]); . string cgi-bin script backwards. . , string server. URLEncoder. , URL, URLConnection . URL url = new URL("http://java.sun.com/cgi-bin/backwards"); URLConnection c = url.openConnection(); c.setDoOutput(true); (stream) PrintWriter : PrintWriter out = new PrintWriter(c.getOutputStream()); URL , getOutputStream : UnknownServiceException. URL , (stream) standard URL (server). . , (stream) . out.println("string=" + stringToReverse); out.close(); (stream) println. , URL (stream). (stream) backward script . Reverse script string string .

  • Java 85

    , URL, cgi-bin script . script , , URL. , URL . Reverse : BufferReader in = new BufferedReader( new InputStreamReader(c.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); Reverse "Reverse Me", : Reverse Me reversed is: eM esreveR

  • Java 86

    11.2 Sockets 11.2.1 Client - Server - ( client - server ). , - , -, . , : - .

    , , - .

    - , , , . , , , ( .. , , mail ).

    , server . , , .

    , . , : { , -, -, -, - } . - -, - , . - -, , , . host , 16-bit , ( port number ) , . , ( half association ), { , -, - }, { , -, - }. socket. O : Socket , , . , . 4.1cBSD Unix ( 1982 ), VAX, Berkeley, socket interface . C Unix, , ( .. Winsock library Microsoft Windows ), ( .. Java ). socket, file system. sockets : T TCP ( Transmission Control Protocol ) socket

    ( connection-oriented service ). , ,

  • Java 87

    , .

    UDP (Unreliable Datagram Protocol ) socket ( connectionless service ). To , , : , ( ) .

    , , TCP sockets : . UDP socket . , . , TCP socket ( handshake packets ) UDP datagrams. . , Java, Socket TCP sockets, , UDP sockets, Datagram. sockets java.net .

    / Socket TCP - ServerSocket CP - DatagramSocket UDP ( client & server ) DatagramPacket UDP netAddress Internet Protocol (

    IP ) URL Uniform Resource Locator URLConnection

    web. 11.2.2 Client - Server TCP sockets , ( echo service ). TCP sockets 7, , , , . . , . , , , , 8205. O ( client ) client : Socket() - server getInputStream() - socket

    getOutputStream() / Java, . streams read() write() - -

  • Java 88

    socket - stream .. - / close() - socket

    . , . Socket, , , (!) ( constructors ) . : Socket s = new Socket(args[0], 8205); . s, socket (args[0] - , , command line, ). , streams / socket , /. , , ( ) / Java streams. , getInputStream() getOutputStream() Socket, : DataInputStream sin = new

    DataInputStream(s.getInputStream()); DataOutputStream sout = new DataOutputStream(s.getOutputStream()); streams socket, / streams. .. : sout.println(Hello); // socket String message = sin.readLine(); //

    // socket socket s, , , port. System.out.println(Connected to + s.getInetAddress() + : + s.getPort()); /, socket , , ( file handlers ), . . . . finally { try { if ( s != null) s.close(); } catch(IOException ioe) { ; } } client echo : // The client program for the echo service // Written using JDK, ver. 1.1.5

  • Java 89

    import java.io.*; import java.net.*; public class EchoClient { public static void echoclient(DataInputStream sin, DataOutputStream sout) throws IOException { DataInputStream in = new DataInputStream(System.in); PrintStream out = new PrintStream(sout); String line; while(true) { line = ""; // read keyboard input and write to TCP socket try { line = in.readLine(); out.println(line); } catch(IOException e) { System.out.println(e.getMessage()); } // read TCP socket and write to terminal... try { line = sin.readLine(); System.out.println(line); } catch(IOException e) { System.out.println(e.getMessage()); } } } // End of echoclient() function... public static void main(String[] args) { Socket s = null; try { // Create the socket to communicate with "echo" // on the specified host s = new Socket(args[0],