frame

slimwhimperSoftware and s/w Development

Nov 3, 2013 (3 years and 10 months ago)

319 views

Swing

วันนี้เรียนอะไร


รู

จักการใช


class Swing
เพื่อสร

าง
Application


รู

จัก
Container


รู

จัก
Component





Swing


เป



Package
ที่รวบรวม
Class
ที่เกี่ยวข

องกับการ
สร

าง
GUI

ในภาษา
Java


มี
Package
ที่เกี่ยวของกับการใช

งาน
Swing
ดังต

อไปนี้


javax.swing.*


java.awt.*


java.awt.event.*

Swing Class hierarchy


Container
แปลว

าที่ใส

ของ หมายถึง
Object
อะไรก

ตามที่เป

นลูกหลานของ
Container
มี
ความสามารถที่จะบรรจุ
Component
อื่นๆ ได



Top level container
คือ
Container
ที่สามารถอยู

ได



วยตัวเองได

ตัวอย

างเช




JDialog


JFrame


JApplet

Container


Component



วนประกอบที่ประกอบกับเป


Application
โดยส

วนใหญ


Component
ที่อยู

ใน
Package Swing
จะมีความสามารถที่เป


Container
ได



วย


JLabel


JButton


JMenu


JMenuBar


………..

Component

JFrame


JFrame

เป


Class
ที่สร

างเป


Frame
หลักเป


Top Level
Container
ที่มีไว

เพื่อให


Component
อื่นๆ สามารถมาอาศัย
อยู

รวมกันได




Constructor
ที่ใช

งานบ

อยๆ มีดังต

อไปนี้


Constructor

ค ำอธิบำย

JFrame()

สร้าง

Frame
โดยไม

มี

Title

JFrame(String
title

)

สร้าง

Frame
โดยก

าหนด

Title

JFrame(



)





Method

ค ำอธิบำย

void add(Component
c

)

เพิ



Component
ใหม

ลงใน

Frame

JMenuBar getJMenuBar()

ดึง

Object Menubar
จาก

Frame

void pack()

ปรับให้ขนาดของ

Frame
พอดีก



Component
ที่มีอยู

ภายใน

void remove(Component c)

ลบ

Component
ที่มีอยู

ออกจาก

Frame

void setDefaultCloseOperation



าหนดผลของการกดปุ่ม

close
ของ

Frame
โดยถ้า


าหนดให้มีค

าเป็น

JFrame.EXIT_ON_CLOSE.
จะเป็นการ
ปิด

Application

void setIconImage(Icon image)



าหนด

Icon Image
ของ

Frame

void
setLayout(LayoutManagerlayout)



าหนดรูปแบบของการจัดเรียง

Component

ภายใน

Frame

JFrame(



)




void setLocation (int x, int y)



าหนดต าแหน

งเริ

มต้นของ

Frame
โดยก

าหนดจาก

0
,
0
เปลี่ยนเป็น

x,y

void setLocationRelativeTo
(Component c)



าหนดต าแหน

งของ

frame
ให้สัมพันธ์ก



component
ใด

ถ้าก

าหนดให้

c=null
มีความหมายว

าอยู


ึ่
งกลาง
หน้าจอ

void setResizeable (boolean
value)



าหนดว



frame
จะถึง

resize
โดย

user
ได้หรือไม


โดย
ปกติแล้วจะก

าหนดค

าเป็น

true
แต

ถ้าไม

ต้องการให้

user resize
ได้ให้ก

าหนดเป็น

false

void setSize(int width, int
height)



าหนดขนาดของ

frame

void setJMenuBar (JMenuBar
menu)



าหนด

menu
ให้ก



frame

ตัวอย

างการเรียกใช

งาน
JFrame

(
เรียกใช

โดยตรง
)

….. main(String[] args) {


JFrame frm
1
= new JFrame("
สวัสดีชาวโลก
");


frm
1
.setSize(
300
,
300
);


frm
1
.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


frm
1
.setVisible(true);

}





ตัวอย

างการเรียกใช

งาน
JFrame (
ใช

โดยการ
Inheritance)

import javax.swing.*;

public class MyFrame extends JFrame {


public MyFrame() {



super("
สวัสดีชาวโลก
");



this.setSize(
300
,
300
);



this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



this.setVisible(true);


}


public static void main(){



MyFrame frm = new MyFrame();


}

}





เพิ่มเติมต

าแหน

งของ
JFrame

public MyFrame() {



super("
สวัสดีชาวโลก
");



this.setSize(
300
,
300
);



frame.setLocation(
0
,
0
)
;


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



this.setVisible(true);


}


เพิ่มเติมต

าแหน

งของ
JFrame

(



)

public MyFrame() {



super("
สวัสดีชาวโลก
");



this.setSize(
300
,
300
);



frame
.
setLocationRelativeTo
(
null
)
;


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



this.setVisible(true);


}


JPanel


แผ

นสี่เหลี่ยมท

าหน

าที่เป


Container
และ
Component


JFrame

JPanel

import javax.swing.*;

public class MyFrame extends JFrame {


public MyFrame() {



super("Hello, World!");



this.setSize(
350
,
260
);




JPanel panel = new JPanel();



panel.setBackground(Color.RED); //


าหนดสี
Background
เป

นสี แดง



this.add(panel);



this.setVisible(true);

//
เมื่อคลิกปุ



x
จะปิดโปรแกรม



this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



this.setLocationRelativeTo(null);


}


public static void main(String[] args) {



MyFrame application = new MyFrame();


}

}

JLabel


JLabel

เป


Component
ที่แสดงข

อความไม

สามารถแก

ไขได



public MyFrame() {




this.setSize(
200
,
100
);




this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);




this.setTitle("Hello, World!");




JPanel panel
1
= new JPanel();




JLabel label
1
= new JLabel("Hello, World!")




panel
1
.add(label
1
);




this.add(panel
1
);




this.setVisible(true);



}

JButton


ปุ



JButton button
1
= new JButton();

button
1
.setText("Click me!");

Handling Events


Events
คือ ผลของ
Object
ที่สร

างขึ้นเมื่อมี
เหตุการณ

ที่เกิดขึ้นจากการกระท

าของผู

ใช

ที่มี
กับ
Application


ตัวอย

างของ
Event
ที่เกิดขึ้นมีดังต

อไปนี้


Events: ActionEvent


Event

Class Listener
Interface

Description

ActionEvent

ActionListener

Created when the user performs an action with a
button or other component. Usually, this
means that the user has
clicked

the button.
However, the user can also invoke a button
action by
tabbing to the button

and
pressing
the Enter key.

Events: ItemEvent


Event

Class Listener
Interface

Description

ItemEvent


ItemListener

Created when the
selected item

in a list
control, such as a combo box or list
box, is changed.

Events:
DocumentEvent

Event

Class Listener
Interface

Description

DocumentEvent

DocumentListener


Created when the
user changes the
contents of a text component
.
such as a text field
.

Events: WindowEvent


Event

Class Listener
Interface

Description

WindowEvent


WindowListener

Created when
the status of the
window (frame) changes
.

Events: ItemEvent


Event

Class Listener
Interface

Description

WindowEvent


WindowListener

Created when
the status of the
window (frame) changes
.

Events:
KeyEvent

Event

Class Listener
Interface

Description

KeyEvent

KeyListener


Created when the
user presses a key on
the keyboard
.
This event can be used
to watch for specific keystrokes entered
by the user
.

Events:
FocusEvent

Event

Class Listener
Interface

Description

FocusEvent

FocusListener


Created when a
component receives or
loses focus
.

Listener


เป


Interface
เพื่อท

าให

ผู

ใช

สามารถดักจับ
Event
ที่ผู

ใช



องการได


วิธีการจับ
Listener


(
สร

างปลา
)


สร

าง

Component
ที่ต

องการ


(
สร

างแห สร

างตาข

าย
)


สร

าง
Class
ที่สามารถ
Implement Interface Listener
ที่


องการ



Implement method
ใน
Interface
ให

ครบถ

วน


(
หว

านแห
)




าหนด
Listener
ที่สร

างขึ้น ให

กับ
Component
ที่


องการจับ


สร

าง

Component
ที่ต

องการ

import javax.swing.*;

public class MyFrame extends JFrame {


private JButton button1;


public MyFrame() {



…….…



JButton button1 = new JButton();



button1.setText("Click me!");





………



}


public static void main(String[] args)

………………………………………………….

สร

าง
Class
ที่สามารถ
Implement Interface Listener
ที่


องการ

import javax.swing.*;

public class MyFrame extends JFrame
implements
ActionListener

{


private JButton button1;


public MyFrame() {



…….…



button1 = new JButton();



button1.setText("Click me!");





………



}


public static void main(String[] args)

………………………………………………….

Implement method
ใน
Interface
ให

ครบถ

วน

import javax.swing.*;

public class MyFrame extends JFrame implements
ActionListener
{


private JButton button
1
;


………………………………………………….


…………………………………………………


public void actionPerformed(ActionEvent e) {



if (e.getSource() == button
1
)




button
1
.setText("You clicked!");



}

}


Implement method
ใน
Interface
ให

ครบถ

วน

import javax.swing.*;

public class MyFrame extends JFrame implements
ActionListener
{


private JButton button
1
;


public MyFrame() {



…….…



JButton button
1
= new JButton();



button
1
.setText("Click me!");



button
1
.addActionListener(this);






………



}


public static void main(String[] args) {…}


public void actionPerformed(ActionEvent e)
{…}

}


ClickMe


The ClickMe Program



The ClickMe Program

with Inner Class


The ClickMe Program

with Inner Class and Exit Button