1. Trang chủ
  2. » Công Nghệ Thông Tin

lập trình mạng chapter 5.1java tcp

112 540 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 112
Dung lượng 2,08 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Java Simplified / Session 22 / 3 of 45 Graphical User Interface GUI được dùng để nhận dữ liệu nhập theo một cách thức thân thiện với người dùng  Abstract Window Toolkit AWT một tập cá

Trang 1

Chương 5:

Abstract Window Toolkit Swing

Trang 2

Java Simplified / Session 22 / 2 of 45

 Panel

 Label

 TextFields and TextAreas

 Checkboxes and RadioButtons

 Button

 Choice

Objectives

Trang 3

Java Simplified / Session 22 / 3 of 45

Graphical User Interface (GUI) được dùng để nhận dữ liệu nhập theo một cách thức

thân thiện với người dùng

Abstract Window Toolkit (AWT) một tập các lớp trong Java cho phép tạo GUI và nhận

dữ liệu nhập của người dùng qua chuột và bàn phím

 AWT cung cấp các item cho phép tạo giao diện hấp dẫn và hiệu quả

Abstract Window Toolkit - AWT

Java Simplified / Session 6 / 3 of 39

Trang 4

Java Simplified / Session 22 / 4 of 45

◦ Stand-alone Applications: chạy độc lập

◦ Applets: chạy trên web page

import awt (Abstract Windows Toolkits) or

import swing component libraries: là sự mở rộng và cải tiến của AWT

Import java.awt.*;

Import javax.swing.*;

Types of GUI Programs

4

Trang 5

Java Simplified / Session 22 / 5 of 45

Hierarchy of Component classes

Trang 6

Java Simplified / Session 22 / 6 of 45

 Component:

◦ Một số ví dụ: Textfield, Label, Checkbox, Textarea, Button…

Trang 7

Java Simplified / Session 22 / 7 of 45

 Component class

Trang 8

Java Simplified / Session 22 / 8 of 45

Container

 Container là một vùng chứa các thành phần

 Lớp Container trong gói java.awt dẫn xuất ra hai container được sử

lớp cho trước

Trang 9

Java Simplified / Session 22 / 9 of 45

Frame

setVisible()

Trang 10

Java Simplified / Session 22 / 10 of 45

Để xây dựng một giao diện ứng dụng cần:

◦ Ex, Frame TestFrame = new Frame (“My Test Frame”)

◦ Ex, TestFrame.add(new Button(“OK”) //optional

Trang 11

Java Simplified / Session 22 / 11 of 45

Ex: FrameDemo

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

class FrameDemo extends Frame {

public FrameDemo(String title)

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent we)

{ setVisible(false );

System.exit(0);

} });

Trang 12

Java Simplified / Session 22 / 12 of 45

Panel

một Frame

Trang 13

Java Simplified / Session 22 / 13 of 45

Ex: PanelDemo

import java.awt.*;

class PanelDemo extends Panel {

public static void main(String args[]) {

PanelDemo ObjPanel = new PanelDemo();

Frame ObjFr = new Frame( "Testing a Panel!" );

setBackground (Color.magenta );

add(new Button( "OK" ));

}

}

Trang 14

Java Simplified / Session 22 / 14 of 45

◦ Tạo một thành phần GUI bởi 1 constructor thích hợp:

Ex: Button btnOK = new Button (“OK”)

◦ Bổ sung thành phần vừa tạo vào thành phần chứa container (ex, Frame):

Ex: add(btnOK); //this.add(btnOK)

◦ Nhận và xử lý sự kiện khi chúng xuất hiện:

Implement ActionListener, …

Viết code.

Tạo các component của GUI

14

Trang 15

Java Simplified / Session 22 / 15 of 45

Label

Trang 16

Java Simplified / Session 22 / 16 of 45

Tạo một textfield mới có nội dung s

Tạo một textfield mới có nội dung s và columns cột

Trang 17

Java Simplified / Session 22 / 17 of 45

Example: Label_TextFieldDemo

Example: Label_TextFieldDemo

import java.awt.*;

public class Label_TextFieldDemo extends Frame {

TextField txtName = new TextField(20);

Label lblName = new Label( "Name :" );

public Label_TextFieldDemo (String title)

Trang 18

Java Simplified / Session 22 / 18 of 45

 Được dùng khi văn bản có thể nằm trên nhiều dòng

 TextArea được tạo ra bằng cách dùng các constructor

TextArea()

Tạo một textarea mới

Tạo một textarea mới với rows dòng và cols cột

TextArea(String text)

Tạo một textarea mới với nội dung text

Tạo một textarea mới với nội dung text, rows dòng và cols cột

TextArea

Java Simplified / Session 6 / 18 of 39

Trang 19

Java Simplified / Session 22 / 19 of 45

Example: Text Area

Java Simplified / Session 6 / 19 of 39

import java.awt.*;

import java.awt.event.*;

class TextComments extends Frame {

TextArea txtComment = new TextArea(5,25);

Label lblCom = new Label("Comments :");

public TextComments(String title) {

public static void main(String args[]) {

TextComments ObjComment = new TextComments("Testing components!");

ObjComment.setSize(200,200);

ObjComment.show();

}

}

Trang 20

Java Simplified / Session 22 / 20 of 45

Trang 21

Java Simplified / Session 22 / 21 of 45

Example Button

Java Simplified / Session 6 / 21 of 39

public class ButtonDemo extends Frame{

Button btnRed = new Button( "Red!" );

Button btnBlue = new Button( "Blue!" );

Button btnGreen = new Button( "Green!" );

public ButtonDemo(String title) {

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent we) {

setVisible(false );

System.exit(0);

} });

}

public static void main(String args[]) {

new ButtonDemo( "The three buttons" );

} }

Trang 22

Java Simplified / Session 22 / 22 of 45

 Dùng để nhận dữ liệu nhiều lựa chọn, người dùng có thể chọn hoặc bỏ chọn

Tạo một checkbox với nội dung text

Checkbox(String text, boolean on)

Tạo một checkbox với nội dung text và thiết lập trạng thái của checkbox là true hay false

thông qua biến on

Checkbox

Java Simplified / Session 6 / 22 of 39

Trang 23

Java Simplified / Session 22 / 23 of 45

Example: Checkbox

class CheckboxDemo extends Frame {

Checkbox cboxRead = new Checkbox( "Reading" , false );

Checkbox cboxMus = new Checkbox( "Music" , false );

Checkbox cboxPaint = new Checkbox( "Painting" , false );

Checkbox cboxMovie = new Checkbox( "Movies" , false );

Checkbox cboxDance = new Checkbox( "Dancing" , false );

Label lblQts = new Label( "What's your hobby?" );

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent we) {

setVisible(false );

System.exit(0);

} });

}

public static void main(String args[]) {

new CheckboxDemo ( "A basket full of checkboxes!" );

} }

Trang 24

Java Simplified / Session 22 / 24 of 45

 Được dùng làm tuỳ chọn để xác định các chọn lựa

 Chỉ một thành phần trong group được chọn

 Trước tiên tạo ra một đối tượng CheckboxGroup

CheckboxGroup cg = new CheckboxGroup();

 Sau đó tạo ra từng radio button

Radiobuttons

Java Simplified / Session 6 / 24 of 39

Trang 25

Java Simplified / Session 22 / 25 of 45

Example:RadioButtonDemo

Java Simplified / Session 6 / 25 of 39

class RadioButtonDemo extends Frame {

CheckboxGroup cg = new CheckboxGroup();

Checkbox radUnder = new Checkbox( "Undergraduate" , cg , false );

Checkbox radGra = new Checkbox( "Graduate" , cg , false );

Checkbox radPost = new Checkbox( "Post Graduate" , cg , false );

Checkbox radDoc = new Checkbox( "Doctorate" , cg , false );

Label lblQts = new Label( "What's your primary qualification?" );

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we) {

public static void main(String args[]){

RadioButtonDemo Obj = new RadioButtonDemo ( "Literacy!" );

} }

Trang 26

Java Simplified / Session 22 / 26 of 45

Trang 27

Java Simplified / Session 22 / 27 of 45

Choice moviestars = new Choice();

Label lblQts = new Label("Who is your favorite movie star?");

public Stars(String str) {

{

setVisible(false);

System.exit(0);

} });

} public static void main(String args[])

Trang 28

Java Simplified / Session 22 / 28 of 45

◦ MenuBar class: define menu bar

◦ MenuItem class: define Item in menu bar

◦ Menu class: set up pull-down menu in a Item menu

◦ PopUpMenu class: display for pop-up menu

◦ CheckboxMenuItem class: contain items menu checked

Menu

28

Trang 29

Java Simplified / Session 22 / 29 of 45

Tạo menu

29

Trang 30

Java Simplified / Session 22 / 30 of 45

ex

30

Trang 31

Java Simplified / Session 22 / 31 of 45

Trang 32

Java Simplified / Session 22 / 32 of 45

Trang 33

Java Simplified / Session 22 / 33 of 45

Các lớp sự kiện trong gói Event

33

Trang 34

Java Simplified / Session 22 / 34 of 45

Mô hình xử lý sự kiện

• Event source : nguồn phát sinh sự kiện, là thành phần của giao diện mà người dùng tác động

Ex: click, move, drag….

• Event object: đối tượng lưu thông tin về sự kiện

lưu trong một đối tượng sự kiện thuộc lớp con của lớp AWT Event (gói

java.awt.event)

• Event listener : bộ lắng nghe sự kiện, nhận sự kiện và xử lý

Là cách chương trình có thể xử lý các sự kiện trên các thành phần của giao diện

Trang 35

Java Simplified / Session 22 / 35 of 45

Mô hình xử lý sự kiện

Trang 36

Java Simplified / Session 22 / 36 of 45

Event Listener

36

Trang 37

Java Simplified / Session 22 / 37 of 45

Các lớp sự kiện -> event source

Lớp sự kiện Mô tả

Trang 38

Java Simplified / Session 22 / 38 of 45

Các bước xử lý sự kiện

 Những việc cần làm:

import java.awt.event.*;

{ }

Trang 39

Java Simplified / Session 22 / 39 of 45

Trang 40

Java Simplified / Session 22 / 40 of 45

Ví dụ: button

Class

Interface Listener

Action

Trang 41

Java Simplified / Session 22 / 41 of 45

Trang 42

Java Simplified / Session 22 / 42 of 45

Ví dụ: checkbox

Trang 43

Java Simplified / Session 22 / 43 of 45

Trang 44

Java Simplified / Session 22 / 44 of 45

MouseEvent & MouseListener

MouseListener is used as a listener for mouse events, an object must

implement this MouseListener interface

The MouseListener interface specifies five different instance methods:

public void mousePressed(MouseEvent evt);

public void mouseReleased(MouseEvent evt);

public void mouseClicked(MouseEvent evt);

public void mouseEntered(MouseEvent evt);

public void mouseExited(MouseEvent evt);

44

Trang 45

Java Simplified / Session 22 / 45 of 45

Ví dụ

Trang 46

Java Simplified / Session 22 / 46 of 45

MouseMotionListener

MouseMotionListener is used as a listener for mouse motion events, an

object must implement this MouseMotionListener interface to handle motion

event

The interface specifies two different instance methods:

public void mouseDragged(MouseEvent evt);

public void mouseMoved(MouseEvent evt);

46

Trang 47

Java Simplified / Session 22 / 47 of 45

Example : Handle MOuse

/* <applet code = Mousey width = 400 height = 400>

int x1, y1, x2, y2;

public void init()

g.drawRect(x1, y1, x2-x1, y2-y1);

x2 = 0;

y2 = 0;

} }

47

Trang 48

Java Simplified / Session 22 / 48 of 45

x3 = e.getX();

x4 = e.getY();

repaint();

} public void mouseReleased(MouseEvent e) {

x3 = e.getX();

x4 = e.getY();

repaint();

} public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

Trang 49

Java Simplified / Session 22 / 49 of 45

Trang 50

Java Simplified / Session 22 / 50 of 45

events need to be captured.

Event handling with Components

Java Simplified / Session 6 / 50 of 39

Trang 51

Java Simplified / Session 22 / 51 of 45

Trang 52

Java Simplified / Session 22 / 52 of 45

FlowLayout mylayout = new FlowLayout();

FlowLayout exLayout = new FlowLayout(FlowLayout.LEFT );

Ex: setLayout(new FlowLayout());

FlowLayout

52

Trang 53

Java Simplified / Session 22 / 53 of 45

BorderLayout Manager

 PAGE_START: đỉnh container

 LINE_END: bên phải container

 PAGE_END: đáy container

 LINE_START : bên trái container

 LINE_CENTER: giữa container

Trang 54

Java Simplified / Session 22 / 54 of 45

Ví dụ: BorderDemo

add( bwest , BorderLayout.LINE_START );

add( bnorth , BorderLayout.PAGE_START );

add( bsouth , BorderLayout.PAGE_END );

add( bcentre , BorderLayout.CENTER );

Trang 55

Java Simplified / Session 22 / 55 of 45

GridLayout Manager

◦ GridLayout g1= new GridLayout(4,3);

Trang 56

Java Simplified / Session 22 / 56 of 45GridLayout

Trang 57

Java Simplified / Session 22 / 57 of 45

GridBagLayout Manager

GridBagLayout gb = new GridBagLayout();

ContainerName.setLayout(gb);

Trang 58

Java Simplified / Session 22 / 58 of 45

GridBagLayout Manager

layout của mỗi thành phần

GridBagLayout đến vị trí và kích thước của mỗi component

Trang 59

Java Simplified / Session 22 / 59 of 45

GridBagLayout Manager

dọc (height)

Trang 60

Java Simplified / Session 22 / 60 of 45

GridBagLayout Manager

◦ ipadx, ipady: tăng kích thước hai bên trái phải (hoặc trên dưới) component thêm ipadx (ipady) pixel khi container thay đổi kích thước

◦ Insets: xác định khoảng trống giữa các component trên đỉnh, đáy, trái và phải

◦ Anchor: neo component vào vị trí nào đó so với ô đặt nó: NORTH, NORTHEAST,

NORTHWEST, WEST, EAST, SOUTH, SOUTHEAST, SOUTHWEST

◦ weightx, weighty: khoảng cách lớn ra tương đối giữa các đối tượng

Trang 61

Java Simplified / Session 22 / 61 of 45

ObjTa = new TextArea("Textarea ",5,10);

ObjTf = new TextField("enter your name");

butta = new Button("TextArea");

buttf = new Button("TextField");

cbg = new CheckboxGroup();

cbbold = new Checkbox("Bold",cbg,false);

cbitalic = new Checkbox("Italic",cbg,false);

cbplain = new Checkbox("Plain",cbg,false);

cbboth = new Checkbox("Bold/Italic",cbg,true);

Trang 62

Java Simplified / Session 22 / 62 of 45

Trang 63

Using Swing

Trang 64

Java Simplified / Session 22 / 64 of 45

Introduction

64

Trang 65

Java Simplified / Session 22 / 65 of 45

JComboBox, JList, JCheckBox,JSlider

65

Trang 66

Java Simplified / Session 22 / 66 of 45

w

setDefaultCloseOperation( JFrame.EXIT_ON_CLO SE);

w.setVisible(true);

}

66

Trang 67

Java Simplified / Session 22 / 67 of 45

Setting up GUI

 To create a Java program that uses a GUI, we must:

and the components which generate the events of interest, and

occur

67

Trang 68

Java Simplified / Session 22 / 68 of 45

Setting up GUI

 Create a container and assign a layout manager to it,

 Create components and add them to the container,

 Use the container as the content pane of a window or applet

68

Trang 69

Java Simplified / Session 22 / 69 of 45

Trang 70

Java Simplified / Session 22 / 70 of 45

Container

 A basic JFrame has a blank content pane;

 One can either:

 JPanel is one of fundamental classes in Swing The basic JPanel is just a blank

rectangle

There are two ways to make a useful JPanel:

 JTabbedPane

70

Trang 71

Java Simplified / Session 22 / 71 of 45

JButton a = new JButton("New");

JButton b = new JButton("Save");

public static void main(String[] args) {

content_ex w = new content_ex("Button Demo");

w setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);

}

Ex: JFrame as a container

71

Trang 72

Java Simplified / Session 22 / 72 of 45

Jpanel as a container

components

components can appear on the screen, they must be added to a

container

72

Trang 73

Java Simplified / Session 22 / 73 of 45

Ex: Jpanel as a container

import java.awt.*;

import javax.swing.*;

class PanelDemo extends JPanel {

public static void main(String args[]){

PanelDemo ObjPanel = new PanelDemo();

JFrame ObjFr = new JFrame("Testing a Panel!");

Trang 74

Java Simplified / Session 22 / 74 of 45

Ex: MultiPanel

public class TitleDemo {

public static void main (String[] args) {

JFrame frame = new JFrame ( "Multi Panel" );

frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE );

JPanel panel = new JPanel();

JPanel p1 = new JPanel();

p1.add (new JLabel ( "This is Label " ));

p1.add (new JButton ( "This is Button " ));

panel.add (p1);

JPanel p2 = new JPanel();

p2.add (new JCheckBox ( "This is CheckBox" ));

p2.add ( new JTextField ( "This is TextField" ));

Trang 75

Java Simplified / Session 22 / 75 of 45

which of several panes are currently visible

 The addTab method creates a tab, specifying the name that appears on the tab and the component to be displayed on that pane when it achieves focus by

being “brought to the front” and made visible to the user

Tabbed pane

75

Trang 76

Java Simplified / Session 22 / 76 of 45

Border

76

Trang 77

Java Simplified / Session 22 / 77 of 45

import javax.swing.*;

public class TabPanelDemo extends JTabbedPane {

public static void main (String[] args) {

JFrame frame = new JFrame ( "Tabbed Panel Demo" );

frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE );

addTab("Button", new JButton( "This is the Button" ));

addTab ("Label", new JLabel( "This is the Label" ));

addTab ("TextField", new JTextField( "This is the TextField" ));

addTab ("CheckBox", new JCheckBox( "This is the CheckBox" ));

addTab ("TextArea", new JTextArea( "This is the TextArea" ));

}

}

Ex: TabPanelDemo

77

Ngày đăng: 12/04/2015, 03:08

TỪ KHÓA LIÊN QUAN

w