1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

158 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Thiết Kế Giao Diện Người Dùng Lập Trình Java
Người hướng dẫn Tạ Việt Phương
Trường học uit
Định dạng
Số trang 158
Dung lượng 2,19 MB

Nội dung

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

Swing Components thườ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)

import java awt.*;

Swing (Java Foundation Classes Package)

import javax 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.

o Cung 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

o Hỗ trợ các thao tác sử dụng bàn phím thay chuột

o Sử dụng tài nguyên hiệu quả hơn

9

Trang 10

Java GUI hierarchy

FontMetrics Graphics

Trang 11

AbstractButton

JButton JComboBox

Trang 12

Swing Components

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

o panel, hoặc pane (JPanel)

o button (JButton)

o label (JLabel)

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

Trang 13

Khái niệm container

vẽ và tô màu.

o Frame/JFrame, Panel/JPanel, Dialog/JDialog,

ScrollPane/JScrollPane, …

o containerObj add (compObj);

o objectName get …( );

o objectName 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

15 Containment

Hierarchy

Trang 16

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

Containment Hierarchy

Trang 17

Containment Hierarchy

Top Level Container

Intermediate Container

Atomic Component N Atomic Component N Atomic Component N

17

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

o Là 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

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

o Là 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

Dialog

container

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

container

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

setLayout(new BorderLayout( ));

add(b1, BorderLayout.NORTH);

Trang 31

BorderLayout (tt)

public void showBorderLayout(){

JFrame frame = new JFrame("Border Layout Demo");

frame.setSize(400,400);

JPanel panel = new JPanel(new BorderLayout());

panel.add( new JButton("North Button"),BorderLayout.NORTH);

panel.add( new JButton("South Button"),BorderLayout.SOUTH);

panel.add( new JButton("West Button"),BorderLayout.WEST);

panel.add( new JButton("East Button"),BorderLayout.EAST);

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

Trang 32

BorderLayout (tt)

Trang 33

Layout Manager: GridLayout

33

➢ 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 = new JFrame("Border Layout Demo");

frame.setSize(400,400);

JPanel panel = new JPanel();

GridLayout gridLayout = new GridLayout(2,2);

panel.setLayout(gridLayout);

panel.add( new JButton("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ớp GridBagLayoutConstraints lưu trữ tất cả các thông tin mà lớp GridLayout yêu cầu: Vị trí và kích thuớc mỗi thà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

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

47

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

o Tạ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

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

o Swing hỗ trợ các kiểu:

JCheckBox

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

public CheckBoxTest()

{

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

11 public class CheckBoxTest extends JFrame {

12 private JTextField field;

13 private JCheckBox 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 class CheckBoxHandler implements ItemListener

{

private int valBold = Font PLAIN ;

private int valItalic = Font PLAIN ;

// respond to checkbox events

public void itemStateChanged( ItemEvent event )

Trang 63

// process italic checkbox events

else

// set text field font

Trang 65

JRadioButton (tt)

65

Trang 66

private Font plainFont, boldFont, italicFont,

boldButton, italicButton,

boldItalicButton;

private ButtonGroup radioGroup;

// create GUI and fonts

public RadioButtonTest()

{

super ( "RadioButton Test" );

// get content pane and set its layout

Container container = getContentPane();

11 public class RadioButtonTest extends JFrame {

12 private JTextField field;

Trang 67

boldButton = new JRadioButton( "Bold" ,

false ); container.add( boldButton );

); container.add( italicButton );

"Bold/Italic" , false );

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 = new ButtonGroup();

// create font objects

67

Trang 68

// private inner class to handle radio button events

private class RadioButtonHandler implements ItemListener

{

// handle radio button events

public void itemStateChanged( 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

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

chọn

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

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

Trang 70

JComboBox (tt)

Trang 71

private String names[] =

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

private Icon icons[] = { new ImageIcon( names[ 0 ] ),

// set up GUI

public ComboBoxTest()

{

super ( "Testing JComboBox" );

// get content pane and set its layout

Container container = getContentPane();

// set up JComboBox and register its event

handler imagesComboBox = new JComboBox( names );

11 public class ComboBoxTest extends JFrame {

12 private JComboBox imagesComboBox;

13 private JLabel label;

names array at a time

2002 Prentice Hall, Inc All rights reserved 71

Trang 72

// anonymous inner class to handle JComboBox

events new ItemListener() {

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 addItemListener

container.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

Jlist

o Danh sách các mục chọn

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

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

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

o Không hỗ trợ doublclik chuột

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

Trang 74

ListSelectionListener

Trang 75

Jlist Demo

75

Trang 76

private String colorNames[] = { "Black" , "Blue" , "Cyan" ,

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

"Magenta" ,

"Orange" , "Pink" , "Red" , "White" , "Yellow" };

private Color colors[] = { Color black , Color blue ,

// set up GUI

public ListTest()

{

super ( "List Test" );

// get content pane and set its layout

11 public class ListTest extends JFrame {

12 private JList colorList;

13 private Container container;

Trang 77

// do not allow multiple selections

colorList.setSelectionMode(

ListSelectionModel.SINGLE_SELECTION );

// add a JScrollPane containing JList to content

pane container.add( new JScrollPane( colorList ) );

// set up event handler

// handle list selection events

public void valueChanged( ListSelectionEvent {

container.setBackground(

colors[ colorList.getSelectedIndex() ] );

} } // end anonymous inner class

); // end call to addListSelectionListener

JList allows single selections

Register JList to receive events from anonymous ListSelectionListener

When user selects item in JList,

Trang 79

Multiple-Selection Lists

Multiple-selection list

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

79

Trang 80

private String colorNames[] = { "Black" , "Blue" ,

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

"Magenta" , "Orange" , "Pink" , "Red" , "White" , "Yellow"

};

// set up GUI

public MultipleSelection()

{

super ( "Multiple Selection Lists" );

// get content pane and set its layout

Container container = getContentPane();

// set up JList colorList

11 public class MultipleSelection extends JFrame {

12 private JList colorList, copyList;

13 private JButton copyButton;

Line 29

Lines 32-33

Use colorNames array to populate JList

Trang 81

// create copy button and register its

listener copyButton = new JButton( "Copy >>>"

);

copyButton.addActionListener(

// anonymous inner class for button

event new ActionListener() {

ActionEvent event )

// handle button event

public void actionPerformed(

{ // place selected values in copyList copyList.setListData(

colorList.getSelectedValues() );

} } // end anonymous inner class

); // end call to addActionListener

container.add( copyButton );

// set up JList copyList

Lines 48-49

Lines 63-64

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

85

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 vào 1 frame:

JFrame f = new JFrame();

f.setSize(300, 200);

f.setVisible(true);

JMenuBar mb = new JMenuBar();

f.setJMenuBar(mb);

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

87

separator trong menu fileMenu :

Trang 88

Menu Demo

Trang 89

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

o showInputDialog Prompt for some input.

o showMessageDialog Tell the user about

something that has happened.

o showOptionDialog The 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)

99

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)

o FileNameExtensionFilter filter = new

FileNameExtensionFilter( "JPG & GIF Images", "jpg",

"gif");

o setFileFilter(FileNameExtensionFilter filter)

Trang 107

107

Trang 108

JTabbedPane (tt)

Trang 109

JTabbedPane (tt)

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

JTabbedPane tabbedPane = new JTabbedPane();

o Gắ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

http://java.sun.com/docs/books/tutorial/uiswing/examples/components/

111

Trang 112

JSplitPane (tt)

Trang 113

JSplitPane, JScrollPane, JList

113

Trang 114

JSplitPane, JScrollPane, Jlist (tt)

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w