cs117 oop chapter 7 - dr. paween•cs117 oop •chapter 7 event-driven programming model by dr....

47
CS117 OOP Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1

Upload: others

Post on 14-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

•CS117 OOP•Chapter 7

Event-Driven Programming Model

By Dr. Paween Khoenkaw

Computer Science MJU

1

Page 2: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Flow of the programProcedural programing model คอการโปรแกรมในลกษณะของการก าหนดการท างานเปนแบบ ทละขนตอน (step by step) เปนการท างานในระดบต า

START

GET LOGIN

CHECK LOGIN

Any New email?

PRINT EMAIL DATA

END

OKNOT OK

NO YES

2

Page 3: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Flow of the programEvent-Driven programing model คอการโปรแกรมในลกษณะของการก าหนดการท างานเปนแบบ ตองท าอะไรบางเม อเกดเหตการณ (Event)ตางๆขน เปนการท างานในระดบสง

ปอน login

Login ถกตอง

เปดอาน email

ตรวจสอบ email ?

ม : สงเนอหา emailสงเนอหา email

3

Page 4: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Flow of the programEvent-Driven programing model คอการโปรแกรมในลกษณะของการก าหนดการท างานเปนแบบ ตองท าอะไรบางเม อเกดเหตการณ (Event)ตางๆขน เปนการท างานในระดบสง

ปอน login

Login ถกตอง

เปดอาน email

ตรวจสอบ email ?

ม : สงเนอหา emailสงเนอหา email

วตถ (object)

เหตการณ ( Event)

Class

Method

4

Page 5: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Event-Driven modelEvent-Driven programing model จะประกอบดวย 2 สวนหลกๆคอ1 Event Raiser สรางเหตการณตางๆ หรอท าหนาท สง Event2 Event Listener เปน Method ท จะถกเรยกขนมาเม อเกดเหตการณตางๆ

Event Raiser

Event Listener

Raiser และ Listener เรยกรวมๆวา Event Handling จะตองใชคกนเสมอเชน Mouse Click Raiser จะใชคกบ Mouse Click Listenerใชผดตวไมไดเราจะใส code ท างานเม อมการ click mouse ดวยการ

Override ท Mouse Clock Listener

5

Page 6: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Event-Driven modelEvent-Driven programing model จะประกอบดวย 2 สวนหลกๆคอ1 Event Raiser สรางเหตการณตางๆ หรอท าหนาท สง Event2 Event Listener เปน Method ท จะถกเรยกขนมาเม อเกดเหตการณตางๆ

Raise

6

Page 7: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

User Interface

Graphical User Interface (GUI )ใชภาพ Icon และ Mouse ในการปอน Inputสวนมากจะเปน Event-Driven programing model

Command-line Interfaces (CLI)ใชตวอกษร และ Keyboard ในการปอน InputสวนมากจะเปนProcedural programing model

7

Page 8: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIJava มชดของคลาสส าหรบสราง GUI ตดมาให 2 กลมคอ

1 AWT (Abstract Windowing Toolkit) มมาตงแต JDK 1.0 เกา และลาสมย2 Swing มตงแต JDK 1.1 ใหมกวาและมเคร องมอใหใชงานมากกวา

Swing เปนสวนตอขยาย (สบทอด)มาจากคลาส AWT ท าใหการท างานในหลายสวนจะคลายกน

AWT

Swing8

Page 9: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIAWT และ Swing จะมเคร องมอหลกใหใชอย 4 สวนคอ

1 Components เปนเคร องมอท ใชท างานเฉพาะทางตางๆ เชนปมกด (Button)2 Containers ใชส าหรบวาง Components3 Layout Manager ใชส าหรบเลอกรปแบบการจดวาง Components4 Event handling ใชส าหรบจดการเหตการณตางๆ เชนตรวจจบการ click

9

Page 10: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIคลาส Swing มกจะขนตนดวยตวอกษร J เสมอ

10

Page 11: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIสวนประกอบแตละชนของ GUI ท สรางดวย Swing

11

Page 12: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIสวนประกอบแตละชนของ GUI ท สรางดวย Swing

JFrameLayout

Component

12

Page 13: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIการดกจบ Event ตางๆใน Swing ตวอยางเชนการ Click ท Button

13

Page 14: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIpublic class HelloSwing {

private JFrame frame;public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {HelloSwing window = new HelloSwing();window.frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}public HelloSwing() {

initialize();}

private void initialize() {frame = new JFrame();frame.getContentPane().addMouseListener(new MouseAdapter() {frame.setBounds(100, 100, 450, 300);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null);JButton btnNewButton = new JButton("Hello World");btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {}});btnNewButton.setBounds(129, 96, 157, 23);frame.getContentPane().add(btnNewButton);}}

14

Page 15: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIEclipse มเคร องมอชวยในการสราง GUI ให ชวยใหเราไมตองเขยน code ในการวาง Containers, Layout และ Componentแตตองดาวนโหลดมาตดตงเพ มเอง จาก https://eclipse.org/windowbuilder/download.phpและเลอกดาวนโหลดใหตรงกบ version ของ Eclipse

15

Page 16: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Java build-in GUIเลอกตดตงใหครบทง Swing , SWT และ Windows Builder

16

Page 17: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

17

ContainersLayout

Component

Swing Framework สามารถแยกเรยนไดเปนอก 1 วชา

Page 18: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing

18

public class Hello_Swing {public static void main(String[] args) {

JFrame F=new JFrame();F.setBounds(1, 1, 400, 200);F.show(true);

}}

(1,1)

400px200px

Page 19: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing

19

(1,1)

400px200px

JFrame

-Bounds-Title…..

+setBoubds(int x, int y, int w, int h)+setTitle(String title)+AddMouseListener(MouseListner I)…..

public class Hello_Swing {public static void main(String[] args) {

JFrame F=new JFrame();F.setBounds(1, 1, 400, 200);F.show(true);F.setTitle("Hello Swing!");

}}

Page 20: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing

20

Properties:ขนาดจอช อจอ....

Methods:ปรบขนาดจอ

ตงช อจอ...........

Event:MouseKeyboard

…….

Object Oriented Programming Model

Event-Driven Programming Model

Page 21: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Mouse Event

21

<<Interface>>MouseListener

+mouseClicked(MouseEvent e)+mouseEntered(MouseEvent e)+mouseExited(MouseEvent e)+mousePressed(MouseEvent e)+mouseReleased(MouseEvent e)

Mouse กดและปลอยMouse วงเขาMouse วงออกMouse กดปมMouse ปลอยปม

Page 22: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Mouse Event

22

<<Interface>>MouseListener

+mouseClicked(MouseEvent e)+mouseEntered(MouseEvent e)+mouseExited(MouseEvent e)+mousePressed(MouseEvent e)+mouseReleased(MouseEvent e)

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);F.show(true);

MouseListener mouse=new MouseListener(){

@Overridepublic void mouseClicked(MouseEvent arg0) {System.out.println("Click");}

@Overridepublic void mouseEntered(MouseEvent arg0) {System.out.println("Enter");}

@Overridepublic void mouseExited(MouseEvent arg0) {System.out.println("Exit");}

@Overridepublic void mousePressed(MouseEvent arg0) {System.out.println("Press");}

@Overridepublic void mouseReleased(MouseEvent arg0) {System.out.println("Release");}};F.addMouseListener(mouse);}

}

มคาเทากบสรางคลาสใหมท สบทอดมาจาก MouseListenerและน าคลาสใหมนนมาสรางเปน instance ช อ mouseวธการนใชส าหรบสรางหลายคลาสในไฟลเดยว

ถาตองการจะใชแค mouseClicked() จะท าอยางไร ? ตองเขยน code ทก method หรอไม ?

Mouse มตง 3 ปม จะรไดอยางไรวาก าลงกดปมไหนอย ?

Page 23: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Mouse Event

23

MouseAdapter

+mouseClicked(MouseEvent e)+mouseDragged(MouseEvent e)+mouseEntered(MouseEvent e)+mouseExited(MouseEvent e)+mouseMoved(MouseEvent e)+mousePressed(MouseEvent e)+mouseReleased(MouseEvent e)+mouseWheelMoved(MouseWheelEvent e)

Page 24: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Mouse Event

24

MouseAdapter

+mouseClicked(MouseEvent e)+mouseDragged(MouseEvent e)+mouseEntered(MouseEvent e)+mouseExited(MouseEvent e)+mouseMoved(MouseEvent e)+mousePressed(MouseEvent e)+mouseReleased(MouseEvent e)+mouseWheelMoved(MouseWheelEvent e)

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);F.show(true);

MouseListener mouse=new MouseAdapter(){

@Overridepublic void mouseClicked(MouseEvent e) {System.out.println("Click!");}

};F.addMouseListener(mouse);}

}

Page 25: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: JButton

25

JFrame เปน ContainerJButton เปน Component

•java.lang.Object

• java.awt.Component

• java.awt.Container

• javax.swing.JComponent

• javax.swing.AbstractButton

• javax.swing.JButton

JButton ตองวางบน Container เสมอ ตวอยางเชน วาง JButton ไวใน JFrame

Page 26: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: JButton

26

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");F.add(b1);F.show(true);

}

}

Containers : JFrameComponent : JButton

Page 27: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: JButton

27

Containers : JFrameComponent : JButton

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");F.add(b1);F.show(true);b1.addMouseListener(new MouseAdapter(){

@Overridepublic void mouseClicked(MouseEvent e) {System.out.println("Click!");}

});

}

}

MouseListener

เขยนแบบนกไดหรอ ?

Page 28: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: JButton

28

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");F.add(b1);F.show(true);b1.addMouseListener(new MouseAdapter(){

@Overridepublic void mouseClicked(MouseEvent e) {System.out.println("Click!");}

});

}

}

เขยนแบบนกไดหรอ ?

b1 : JButton

: MouseAdapter

ตอบ:ได เพราะเราไมตองการน าเอา instance ไปใชท าอยางอ น หรอตองการเรยกใช mouseClick เองแตตองระวง เพราะ MouseAdapterเปน inner class หามท าการสบทอดตอ

inner class

outer class

Page 29: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: JButton

29

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");

F.add(b1);F.add(b2);

F.show();}

}

ลองเพมปมท 2

JFrame เปน Container ท สามารถใส Component ไดแคตวเดยวตองการใส Component มากกวา 1 ตองใชตวชวย

Page 30: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: JPanel

30

JPanel เปน Container ทสามารถใส Component ไดหลายตว แตท างานดวยตวเองไมไดตองใช JFrame เปนตวชวยในการแสดงผลบนจอ

JFrameJPanel

JButton

JButton

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JPanel P=new JPanel();

P.add(b1);P.add(b2);F.setContentPane(P);

F.show();}

}

Page 31: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: JPanel

31

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JButton b3=new JButton("I am Button3");JPanel P=new JPanel();

P.add(b1);P.add(b2);P.add(b3);F.setContentPane(P);F.show();

}

ท าไมต าแหนงปมจงเรยงจากซายไปขวา ?ตองการเปล ยนต าแหนงปม (ยายปม 3 ไปไวมมลางขวา) จะท าไดไหม ?

Page 32: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: JPanel

32

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JButton b3=new JButton("I am Button3");JPanel P=new JPanel();

P.add(b1);P.add(b2);P.add(b3);F.setContentPane(P);F.show();

}

ท าไมต าแหนงปมจงเรยงจากซายไปขวา ?

ตองการเปล ยนต าแหนงปม (ยายปม 3 ไปไวมมลางขวา) จะท าไดไหม ?

ตอบ:เพราะโดยปรยายแลว JPanel จะเรยง Component จากซายไปขวาเสมอ

ตอบ:ท าได แตตองท าการเปล ยน Layout

Page 33: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Layout

33

Left to right,Top to bottom

c

n

s

ew

FlowLayout GridLayout

BorderLayout

none, programmer sets x,y,w,h

null

One at a time

CardLayout GridBagLayout

JButton

Layout คอรปแบบในการวาง Component แบบตางๆ

Page 34: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Layout

Page 35: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Null Layout

35

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JButton b3=new JButton("I am Button3");JPanel P=new JPanel();P.setLayout(null);

P.add(b1);P.add(b2);P.add(b3);F.setContentPane(P);F.show();

}

}

Button หายไปไหนหมด ?

Page 36: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Null Layout

36

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JButton b3=new JButton("I am Button3");JPanel P=new JPanel();P.setLayout(null);

P.add(b1);P.add(b2);P.add(b3);b1.setBounds(1, 1, 120, 25);b2.setBounds(121, 1, 120, 25);b3.setBounds(250, 120, 120, 25);F.setContentPane(P);F.show();

}

}

Page 37: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Null Layout

37

ขยายขนาดหนาจอ

ยอขนาดหนาจอ

Page 38: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Layout

38

Left to right,Top to bottom

c

n

s

ew

FlowLayout GridLayout

BorderLayout

none, programmer sets x,y,w,h

null

One at a time

CardLayout GridBagLayout

JButton

Layout คอรปแบบในการวาง Component แบบตางๆ

Page 39: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Grid Layout

39

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JButton b3=new JButton("I am Button3");JPanel P=new JPanel();GridLayout gLayout=new GridLayout(2,3);P.setLayout(gLayout);

P.add(b1);P.add(b2);P.add(b3);

F.setContentPane(P);F.show();

}

}

1 2 3

4 5 6

Page 40: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Grid Layout

40

1 2 3

4 5 6

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JButton b3=new JButton("I am Button3");JPanel P=new JPanel();GridLayout gLayout=new GridLayout(2,3);P.setLayout(gLayout);

P.add(b1);P.add(b2);P.add(new JLabel(""));P.add(new JLabel(""));P.add(new JLabel(""));P.add(b3);

F.setContentPane(P);F.show();

}

}

Page 41: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Hello Swing: Grid Layout

41

ขยายขนาดจอลดขนาดจอ

Page 42: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

โปรแกรมแปลงคาอณหภม

42

รบคา Celsius แปลง แสดงค าตอบ Fahrenheit

JTextField JButtonJLabel

GridLayout

Event: MouseAdapter

+mouseClicked()

Page 43: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

โปรแกรมแปลงคาอณหภม

43

public class HelloTemperature {

public static void main(String[] args) {JFrame F=new JFrame("Hello Temperature");JPanel P=new JPanel();F.setBounds(1, 1, 500, 100);GridLayout gLayout=new GridLayout(1,3);P.setLayout(gLayout);F.add(P);

JTextField t1=new JTextField();JButton b1=new JButton("Convert to Fahrenheit");

JLabel l1=new JLabel("Hello");

P.add(t1);P.add(b1);P.add(l1);

F.show();}}

Page 44: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

โปรแกรมแปลงคาอณหภม

44

public class HelloTemperature {

public static void main(String[] args) {JFrame F=new JFrame("Hello Temperature");JPanel P=new JPanel();F.setBounds(1, 1, 500, 100);GridLayout gLayout=new GridLayout(1,3);P.setLayout(gLayout);F.add(P);

JTextField t1=new JTextField();JButton b1=new JButton("Convert to Fahrenheit");

JLabel l1=new JLabel("Hello");

P.add(t1);P.add(b1);P.add(l1);

b1.addMouseListener(new MouseAdapter(){

@Overridepublic void mouseClicked(MouseEvent arg0) {Double c=Double.valueOf( t1.getText() );Double f=(c*(9/5.0)+32);l1.setText(String.format("%.2f'F", f) );}

});F.show();

}

}

Page 45: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Swing: Windows Application

45

สรปแลวโครงสรางพนฐานของ GUI จะประกอบดวย1) JFrame2) JPanel3) Layout4) Component5) Event Handler ( Event listener)

3 สวนนตองใชคกนเสมอแลวท าไมไมรวม หรอ ใสใหเองเลยตงแตแรก ?

จรงๆ swing framework ท าการตดตงสวนประกอบทง 3 ไวใน JFrame แลว และยงมสวนประกอบอ นท เรายงไมไดใชงาน

Page 46: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

Swing: Windows Application

46

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JButton b3=new JButton("I am Button3");F.getContentPane().setLayout(new GridLayout(2,3));F.getContentPane().add(b1);F.getContentPane().add(b2);F.getContentPane().add(new JLabel(""));F.getContentPane().add(new JLabel(""));F.getContentPane().add(new JLabel(""));F.getContentPane().add(b3);F.show();

}

}

public class Hello_Swing {

public static void main(String[] args) {JFrame F=new JFrame();

F.setBounds(1, 1, 400, 200);JButton b1=new JButton("I am Button1");JButton b2=new JButton("I am Button2");JButton b3=new JButton("I am Button3");JPanel P=new JPanel();GridLayout gLayout=new GridLayout(2,3);P.setLayout(gLayout);

P.add(b1);P.add(b2);P.add(new JLabel(""));P.add(new JLabel(""));P.add(new JLabel(""));P.add(b3);

F.setContentPane(P);F.show();

}

}

Page 47: CS117 OOP Chapter 7 - Dr. Paween•CS117 OOP •Chapter 7 Event-Driven Programming Model By Dr. Paween Khoenkaw Computer Science MJU 1 Flow of the program Procedural programing model

47

การบาน 5

เขยนค าตอบใสกระดาษ A4 จ านวน 1 แผน สงทางกลองรบการบาน หนาแลป 2เขยนช อ รหส กลมเรยน ท มมบนขวาภายในวนศกรท 8 กนยายน 2560

ใหออกแบบหนาจอของโปรแกรมแปลงเงนบาทเปนสกลอ นประกอบไปดวย USD, EUR, GBP, JPY และCNY ท เหมาะสมกบการใชงานจรง โดยก าหนดใหเลอกใช component ดงตอไปน

ตวอยางเชน

TextFieldบาท: แปลงเปน USDButton

แปลงเปน EURButton

แปลงเปน GBPButton

แปลงเปน JPYButton

แปลงเปน CNYButtonTextFieldแปลงไดเปน: