chapter 4 thiết kế gioa diện người dùng lập trình java

158 0 0
chapter 4 thiết kế gioa diện người dùng lập trình java

Đ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

Giao diện◂Giao diện nghĩa là điểm giao tiếp giữa hai đối tượng.◂Giao diện là tất cả những gì xuất hiện trên phần mềm bao gồm hình ảnh, thông tin, video, các điều hướng người dùng trên we

Trang 3

GIỚI THIỆU

Trang 4

Giao diện

Giao diện nghĩa là điểm giao tiếp giữa hai đối tượng.

Giao diện là tất cả những gì xuất hiện trên phần mềm bao gồm hình ảnh, thông tin, video, các điều hướng người dùng trên website, liên kết trên web hay đơn giản là tất cả những gì người dùng nhìn thấy, tương tác khi vào trong ứng dụng.

Trang 5

Giao diện

quan Người dùng tương tác với đối tượng này thông qua con trỏ chuột hay bàn phím Các thành phần như là button, label v.v… có thể được nhìn thấy trên màn hình.

Interface (GUI)

5

Trang 6

TỔNG QUAN GUI

Trang 7

Tổng quan GUI

➢AWT:cung cấp các gói cơ bản để lập trình giao diện, được sử dụng trong các phiên bản trước jdk1.2 (java2) ➢Swing: có nhiều chức năng hơn AWT, xây dựng chương

trình dễ dàng mềm dẻo hơn Được đưa vào từ jdk1.2

Swing Componentsthường có tên bắt đầu với 'J'

Trang 8

Tổng quan GUI

➢Thư viện hỗ trợ lập trình giao diện trong Java: tập hợp các lớp java cung cấp hỗ trợ thiết kế, xây dựng GUI

AWT (Abstract Windows Toolkits) importjava.awt.*;

Swing (Java Foundation Classes Package) importjavax.swing.*;

import java.awt.*;

import java.awt.event.*;

Trang 9

Swing API

Java Foundation Classes(JFC) cung cấp một tập các chức năng giúp xây dựng các ứng dụng GUI.

oCung cấp thêm các đối tượng mới để xây dựng giao diện đồ họa

o look-and-feel: tùy biến để các thành phần giao diện của

Swing nhìn giống như các thành phần giao diện của HĐH

oHỗ trợ các thao tác sử dụng bàn phím thay chuột oSử dụng tài nguyên hiệu quả hơn

9

Trang 10

Java GUI hierarchy

Trang 12

Swing Components

oframe, còn gọi main window (JFrame)

opanel, hoặc pane (JPanel)

obutton (JButton)

olabel (JLabel)

dụng GUI kết hợp với nhau.

Trang 13

Kháiniệm container

vẽ và tô màu.

oFrame/JFrame, Panel/JPanel, Dialog/JDialog, ScrollPane/JScrollPane, …

oobjectName.get…( );

oobjectName.set…( );

13

Trang 14

Nguyên tắc xây dựng GUI

Dialog/JDialog, …

➢Tạo các điều khiển(control): (buttons, text areas, list, choice, checkbox )

Trang 15

15Containment

Hierarchy

Trang 16

Frame: Top-level container:JFrame, JDialog, JApplet

Containment Hierarchy

Trang 19

Containment Hierarchy

Top Level Containers

▪JFrame: sử dụng cho các cửa sổ chính của chương trình

▪JDialog: cửa sổ thông báo

▪JApplet: sử dụng trên trình duyệt

19

Trang 20

Containment Hierarchy (tt)

Top Level Containers: JFrame

oLà cửa sổ chính, dùng để chứa các thành phần giao diện khác Đóng vai trò là một container

oHàm khởi tạo

•JFrame(String title)

oCác thành phần đồ họa được đưa vào content pane, không đưa trực tiếp vào JFrame Ví dụ:

oJFrame cung cấp 2 phương thức:

Trang 21

VíDụ JFrame

import javax.swing.*;

class Frame1 extends JFrame{/* Construction of the frame */

public class AppFrame1 {

public static void main(String[ ] args) {Frame1 frame =new Frame1();

Trang 22

Containment Hierarchy (tt)

Intermediate Containers

Trang 23

Containment Hierarchy (tt)

Intermediate Containers: JPanel

oLà container trung gian để chứa các Atomic

Trang 24

Containment Hierarchy (tt)

Atomic Components

Trang 25

JFrame frame = new JFrame( ); JPanel pane = new JPanel(); frame.getContentPane().add(pane);

25

Trang 26

LAYOUT

MANAGER

Trang 27

Layout Manager

Khái niệm: được dùng điều khiển cách trình bày vật lý

của các phần tử GUI như làbutton, textbox, option button➢Các loại layout khác nhau:

Trang 28

Layout Manager: FlowLayout

➢Là trình quản lý layout mặc định cho các panel

trái trên đến góc phải dưới của màn hình.

➢Các hàm khởi tạo - constructor:

align: có các giá trị FlowLayout.LEFT, FlowLayout.CENTER,

Trang 29

FlowLayout (tt)

Flow Layout – Left and Right Aligned

29

Trang 30

Layout Manager: BorderLayout

EAST, SOUTH, WEST và CENTER của container

JButton b1= new JButton(“North Button”); setLayout(new BorderLayout( ));

add(b1, BorderLayout.NORTH);

Trang 31

BorderLayout (tt)

public voidshowBorderLayout(){

JFrame frame =new JFrame("Border Layout Demo"); frame.setSize(400,400);

JPanel panel =new JPanel(newBorderLayout());

panel.add(newJButton("North Button"),BorderLayout.NORTH); panel.add(newJButton("South Button"),BorderLayout.SOUTH); panel.add(newJButton("West Button"),BorderLayout.WEST); panel.add(newJButton("East Button"),BorderLayout.EAST);

panel.add(newJButton("Center Button"),BorderLayout.CENTER);

Trang 32

BorderLayout (tt)

Trang 33

Layout Manager: GridLayout

➢Hỗ trợ việc chia container thành một lưới

có cùng kích thước

GridLayout layout = new GridLayout(no of rows, no of columns);

containerObj.setLayout(layout);

Trang 34

public void showGridLayout(){

JFrame frame =newJFrame("Border Layout Demo"); frame.setSize(400,400);

JPanel panel = newJPanel();

GridLayout gridLayout =newGridLayout(2,2); panel.setLayout(gridLayout);

panel.add(newJButton("Button 1"));panel.add(new JButton("Button 2"));panel.add(new JButton("Button 3"));panel.add(new JButton("Button 4"));//frame.getContentPane().add(panel);

Trang 35

Layout Manager: GridBagLayout

GridBagLayout gb = new GridBagLayout( );

➢LớpGridBagLayoutConstraintslưu trữ tất cả các thôngtin mà lớp GridLayout yêu cầu: Vị trí và kích thuớc mỗithành phần

Trang 36

GridBagLayout

Trang 37

Layout Manager: NullLayout

Trang 38

COMPONENTS

Trang 39

Swing Components

được gọi là component.

Choice, List, Scrollbars,…

39

Trang 40

Swing Components

Trang 41

Sử Dụng Swing Component

41

Trang 42

➢Có các phương thức add, set, get

Trang 43

Label dùng để hiển thị một chuỗi văn bản, hình ảnh

nhằm mô tả thêm thông tin cho các đối tượng khác.

JLabel()

JLabel(String text)

JLabel(String text,int hAlignment) JLabel(Icon icon)

JLabel(Icon icon, int hAlignment)

JLabel(String text,Icon icon,int hAlignment)

hAlignment: có các giá trịLEFT,CENTER,RIGHT,LEADING, hoặc

TRAILING

Trang 45

VíDụ

45

Trang 46

Đây là lớp cha của tất cả các lớp hiển thị văn bản trong Swing

JTextComponent

Trang 47

Textfield là ô nhập dữ liệu dạng văn bản trên 1 dòng.

oTạo một text field với văn bản có sẵn và số cột xác định.

JTextField(String text, int columns)

Trang 50

JTextArea(int rows, int columns)

JTextArea(String s, int rows, int columns)

Trang 53

Swing Button Classes

Trang 54

Button là một thành phần gây ra một sự kiện hành động

khi được kích chuột.

JButton()

JButton(String text)

JButton(String text, Icon icon) JButton(Icon icon)

Trang 56

➢Các nút lệnh thay đổi trạng thái

oNhận các giá trị on/off hoặc true/false

oSwing hỗ trợ các kiểu:

JRadioButton

Trang 57

o Object getItem():trả về mục được chọn

o int getStateChange():trả về trạng thái trạng thái của mục chọn (DESELECTED/SELECTED)

Trang 58

o void itemStateChanged(ItemEvent e):được gọi thi hành khi người dùng chọn hoặc bỏ chọn 1 mục.

Item Listener

Trang 59

JCheckBox(String text, boolean selected) JCheckBox(String text, Icon icon)

JCheckBox(String text, Icon icon, boolean selected)

JCheckBox(Action a)

Trang 60

JCheckBox (tt)

Trang 61

// set up GUI

publicCheckBoxTest(){

super("JCheckBox Test");

// get content pane and set its layout Container container = getContentPane();

// set up JTextField and set its font field =

); container.add( field );// create checkbox objects

11public classCheckBoxTestextendsJFrame {12private JTextField field;

13privateJCheckBox bold, italic;

Declare two JCheckBox instances

Set JTextField font

to Serif, 14-point plain

Instantiate JCheckBoxs for bolding and italicizing JTextField text, respectively

61

Trang 62

// register listeners for JCheckBoxes

// private inner class for ItemListener event handling

private classCheckBoxHandlerimplements ItemListener{

private int valBold = Font.PLAIN;

private intvalItalic = Font.PLAIN;// respond to checkbox events

public voiditemStateChanged( ItemEvent event )

Register JCheckBoxs to receiveevents from CheckBoxHandler

When user selects JCheckBox,

CheckBoxHandler invokes

method itemStateChanges of all

registered listeners

Trang 63

// process italic checkbox events

// set text field font

Change JTextField font, depending on which JCheckBox was selected

63

Trang 65

JRadioButton (tt)

65

Trang 66

privateFont plainFont, boldFont, italicFont,

boldButton, italicButton,boldItalicButton;

privateButtonGroup radioGroup;// create GUI and fonts

publicRadioButtonTest(){

super("RadioButton Test");

// get content pane and set its layout Container container = getContentPane();

11public classRadioButtonTestextendsJFrame {12privateJTextField field;

Trang 67

boldButton = newJRadioButton("Bold",

false); container.add( boldButton );

); container.add( italicButton );

container.add( boldItalicButton );// register events for JRadioButtons

RadioButtonHandler(); plainButton.addItemListener(handler ); boldButton.addItemListener( handler ); italicButton.addItemListener( handler );

boldItalicButton.addItemListener( handler );// create logical relationship between

JRadioButtons radioGroup =newButtonGroup();// create font objects

Instantiate JRadioButtons for manipulating JTextField text font

Trang 68

// private inner class to handle radio button events

private classRadioButtonHandlerimplementsItemListener{

// handle radio button events

public voiditemStateChanged( ItemEvent event ){

// user clicked plainButton

field.setFont( plainFont );// user clicked boldButton

else if(event.getItem() == boldButton) field.setFont( boldFont );

// user clicked italicButton

else if(event.getItem() == italicButton) field.setFont( italicFont );

// user clicked boldItalicButton

else if(event.getItem() == boldItalicButton

Trang 69

oDùng để liệt kê danh sách các mục mà người dùng có thể chọn

oCòn được gọi là drop-down list

oPhát sinh sự kiện ItemEvent khi người sử dụng chọn 1 mục

Trang 70

JComboBox (tt)

Trang 71

privateString names[] =

{"bug1.gif","bug2.gif","travelbug.gif","buganim.gif"};

privateIcon icons[] = { newImageIcon( names[0] ),

// set up GUI

publicComboBoxTest(){

super("Testing JComboBox");

// get content pane and set its layout Container container = getContentPane();

// set up JComboBox and register its event

handler imagesComboBox = newJComboBox( names );

11public classComboBoxTestextendsJFrame {12privateJComboBox imagesComboBox;13privateJLabel label;

Register JComboBox to receive events from anonymous ItemListener

Instantiate JComboBox to show three Strings from

names array at a time

2002 Prentice Hall, Inc All rights reserved 71

Trang 72

// anonymous inner class to handle JComboBoxevents newItemListener() {

ItemEvent event )// handle JComboBox event

public void itemStateChanged({

// determine whether check box selected

label.setIcon( icons[

imagesComboBox.getSelectedIndex() ] );}

}// end anonymous inner class);// end call to addItemListenercontainer.add( imagesComboBox );

// set up JLabel to display ImageIcons

When user selects item in JComboBox,

ItemListener invokes method itemStateChanged of all registered listeners

Set appropriate Icon

depending on user selection

Trang 73

oDanh sách các mục chọn

oCó thể chọn 1 hoặc nhiều mục

oCho phép sắp xếp dữ liệu hiển thị, phân nhóm

oCó thể hiển thị chuỗi và icon

oKhông hỗ trợ doublclik chuột

oPhát sinh ListSelectionEvent khi người dùng chọn

Trang 74

ListSelectionListener

Trang 75

Jlist Demo

75

Trang 76

privateString colorNames[] = {"Black","Blue","Cyan",

"Dark Gray","Gray","Green","Light Gray",

privateColor colors[] = { Color.black, Color.blue,

// set up GUI

publicListTest(){

super("List Test" );

// get content pane and set its layout

11public classListTestextendsJFrame {12private JList colorList;

13private Container container;

Trang 77

// do not allow multiple selections colorList.setSelectionMode(

ListSelectionModel.SINGLE_SELECTION );

// add a JScrollPane containing JList to contentpane container.add(new JScrollPane( colorList ) );// set up event handler // handle list selection events

public voidvalueChanged( ListSelectionEvent{

colors[ colorList.getSelectedIndex() ] );}

}// end anonymous inner class

);// end call to addListSelectionListener

JList allows single selections

Register JList to receive events from

Set appropriate background depending on user selection

2002 Prentice Hall, Inc All rights reserved.

77

Trang 79

Multiple-Selection Lists

Multiple-selection list

o Chọn nhiều mục trên Jlist

79

Trang 80

privateString colorNames[] = {"Black","Blue",

"Cyan", "Dark Gray","Gray","Green","Light Gray",

// set up GUI

publicMultipleSelection(){

super("Multiple Selection Lists");// get content pane and set its layout Container container = getContentPane();

// set up JList colorList

11public classMultipleSelectionextendsJFrame {12privateJList colorList, copyList;

13private JButton copyButton;

Trang 81

// create copy button and register its

listener copyButton = newJButton("Copy >>>"

// anonymous inner class for buttonevent newActionListener() {

ActionEvent event )// handle button event

public voidactionPerformed(

}// end anonymous inner class);// end call to addActionListenercontainer.add( copyButton );

// set up JList copyList

When user presses JButton, JList

copyList adds items that user selected

from JList colorList

Trang 83

đó có gắn các pull-down menu Các menu chứa các menu

item để người dùng lựa chọn (hoặc bật/tắt) Menu bar có

thể được xem như một cấu trúc để hỗ trợ các menu.

Trang 84

Menus (tt)

Trang 85

Lớp JMenuBar

Menu bar chứa các menu; menu bar chỉ có thể được thêm

vào 1 frame Đoạn code sau tạo và thêm một JMenuBar

Trang 86

Lớp JMenu

menu File và Help, và thêm chúng vào JMenuBar mb: JMenu fileMenu = new JMenu("File");

JMenu helpMenu = new JMenu("Help");

mb.add(fileMenu); mb.add(helpMenu);

Trang 87

Lớp JMenuItem

separator trong menufileMenu:

Trang 88

Menu Demo

Trang 89

thêm các submenu “Unix”, “NT”, và “Win95” vào trong mục chọn “Software”.

JMenu softwareHelpSubMenu = new JMenu("Software");JMenu hardwareHelpSubMenu = new JMenu("Hardware");

helpMenu.add(softwareHelpSubMenu); helpMenu.add(hardwareHelpSubMenu);

softwareHelpSubMenu.add(new JMenuItem("Unix")); softwareHelpSubMenu.add(new JMenuItem(“Windows"));

Trang 90

Submenu Demo

Trang 91

SWING Dialog Boxes

Trang 92

Static method call

JOptionPane.showInputDialog(“Enter your home directory”);

Trang 93

oshowInputDialogPrompt for some input oshowMessageDialogTell the user about

something that has happened.

oshowOptionDialogThe Grand Unification of the above three.

Trang 94

Sử Dụng JOptionPane

// static method call

JOptionPane

Trang 95

95

Trang 96

JOptionPane.showInputDialog(“Enter your home directory”);

JOptionPane

Trang 98

JFileChooser (tt)

Trang 99

JFileChooser (tt)

JFileChooser.APPROVE_OPTION

Trang 100

JFileChooser (tt)

Trang 101

JFileChooser (tt)

if (returnValue == JFileChooser.APPROVE_OPTION) filename = fc.getName();

101

Trang 105

Dùng JFileChooser

a File object a String

105

Trang 106

Lọc Tập Tin Hiển Thị

➢FileNameExtensionFilter(String dispc, String filter)

oFileNameExtensionFilter filter = new

FileNameExtensionFilter( "JPG & GIF Images", "jpg", "gif");

osetFileFilter(FileNameExtensionFilter filter)

Trang 107

107

Trang 108

JTabbedPane (tt)

Trang 109

JTabbedPane (tt)

oTạo mới đối tượng JTabbedPane

JTabbedPane tabbedPane = new JTabbedPane();

oGắn thêm 1 Tab mới vào đối tượng JTabbedPane

tabbedPane.addTab(“Tab name”, icon, component, “Tooltip”);

109

Trang 110

JTabbedPane (tt)

Trang 111

111

Trang 112

JSplitPane (tt)

Trang 113

JSplitPane, JScrollPane, JList

113

Trang 114

JSplitPane, JScrollPane, Jlist (tt)

Trang 116

➢Có 3 yếu tố quan trọng trong mô hình xử lý sự kiện:

oNguồn phát sinh sự kiện (event source)

oSự kiện (event object)

oBộ lắng nghe sự kiện (event listener)

Trang 117

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

➢Nguồn phát sinh sự kiện (event source):

oThành phần giao diện tạo ra sự kiện

oVD: Button, mouse, keyboard

➢Sự kiện (event object)

oTạo ra khi sự kiện xảy ra

oChứa tất cả thông tin về sự kiện mà nó xảy ra:

Trang 118

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

oMột đối tượng sự kiện được tạo ra

oĐối tượng sự kiện được kích hoạt bằng nguồn đã đăng ký listener

oGiải mã những thông điệp

oXử lý sự kiện mà nó xuất hiện

Trang 119

➢Khai báo lớp xử lý sự kiện

public class MyClass implements<Event>Listener

➢Cài đặt các phương thức trong listener interface.

public void actionPerformed(ActionEvent e) { //code that reacts to the action }

Ngày đăng: 27/04/2024, 10:57

Tài liệu cùng người dùng

Tài liệu liên quan