awt 認識 awt 容器與版面配置 事件處理 awt 元件使用. 認識 awt gui ( graphical...

49
AWT 認認 AWT 認認認認認認認 認認認認 AWT 認認認認

Upload: roy-mccoy

Post on 18-Jan-2018

305 views

Category:

Documents


0 download

DESCRIPTION

Object MenuComponent Component MenuBar MenuItem Menu CheckBoxMenuItem Button TextComponent TextArea TextField PopupMenu Canvas CheckBox Choice Container Label List ScrollBar Panel(FlowLayout) Window ScrollPane Dialog(BorderLayout) Frame (BorderLayout) Applet (FlowLayout)

TRANSCRIPT

Page 1: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

AWT 認識 AWT 容器與版面配置 事件處理 AWT 元件使用

Page 2: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

認識 AWT GUI (graphical user interface) AWT(Abstract Window Toolkits) Package java.awt

Page 3: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Object

MenuComponent

Component

MenuBar

MenuItemMenu

CheckBoxMenuItemButton

TextComponentTextArea

TextField

PopupMenu

Canvas

CheckBox

Choice

Container

Label

List

ScrollBar

Panel(FlowLayout)

Window

ScrollPane

Dialog(BorderLayout)

Frame (BorderLayout)

Applet (FlowLayout)

Page 4: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Container 所有 AWT 元件 (Component) 都要裝在容器 (Container) 中 兩個主要且常用的 container

– java.awt.Frame– java.awt.Panel

Page 5: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Frame 繼承關係

建構子public Frame() throws HeadlessExceptionpublic Frame(GraphicsConfiguration gc)public Frame(String title) throws HeadlessExcept

ion

java.lang.Object

java.awt.Component

java.awt.Container

java.awt.Window

java.awt.Frame

Page 6: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Frame 類別常數

public static final int ICONIFIED public static final int MAXIMIZED_HORIZ public static final int MAXIMIZED_VERT public static final int MAXIMIZED_BOTH public static final int NORMAL

Page 7: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Frame 常用方法 Frame 常用方法

public String getTitle()public void setTitle(String title) public MenuBar getMenuBar() public void setMenuBar(MenuBar mb)public int getState() public void setState(int state) public boolean isResizable() public void setResizable(boolean resizable)

Page 8: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Window 常用方法 Window 常用方法

public boolean isShowing()public boolean isFocused()public void toFront()public void toBack()public void pack()

Page 9: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Container 常用方法 Container 常用方法

public Component add(Component comp)public void remove(Component comp)public void remove(int index)public void removeAll()public LayoutManager getLayout()public void setLayout(LayoutManager mgr)

Page 10: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Component 常用方法 Component 常用方法

public void setFont(Font f)public void setForeground(Color c) public void setBackground(Color c)public void setSize(int width, int height)public void setVisible(boolean b) public void setLocation(int x, int y)

Page 11: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Panel 繼承關係

建構子public Panel() public Panel(LayoutManager layout)

java.lang.Object

java.awt.Component

java.awt.Container

java.awt.Panel

Page 12: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

版面配置 負責元件的相對位置 , 大小及長相 只有 container 的子類別可以使用 Layout 常用 Layput

– BorderLayout– FlowLayout– GridLayout– CardLayout– GridBagLayout

Page 13: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Flow Layout Flow Layout

– Default Layout manager of Panel, Applet– 每個元件大小為元件之 preferred size

– Resize

Page 14: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

BorderLayout BorderLayout

– Default Layout manager of Window, Frame– 將 container 分為東 , 西 , 南 , 北 , 中 , 五個區域– 元件 preferred size南北 - preferred 高東西 - preferred 寬– 指定位置的常數BorderLayout.EAST,BorderLayout.WEST,BorderLayout.NORTH,BorderLayout.SOUTH,BorderLayout.CENTER

中西 東

(

(╭╮ ╭╮

Page 15: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

BorderLayout Resize

– 南北 : 水平縮放– 東西 : 垂直縮放– 中 : 等比例縮放

Page 16: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Grid Layout Grid Layout

– 將 Container 分成 X*Y 的表格– 元件加入順序為先由左而右 , 再由上至下– 元件大小為表格的長與寬– Resize

Page 17: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Card Layout Card Layout

– 將元件視為一系列的卡片 , 一次顯示一張– 元件大小為 Container 的長與寬

#1 #2

Page 18: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

GridBag Layout GridBag Layout

– 有彈性但複雜的版面配置方式– 每一元件可自訂長與寬– 元件可超出 Grid 的範圍

Page 19: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

不使用 Layout Java 提供的 Layout Manager 無法滿足需求時

– 自行設計 Layout Manager:實作 LayoutManager 或 LayoutManager2

– 不使用 LayoutsetLayout(null)setSize()setLocation()

Page 20: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

事件處理 Package java.awt.event 事件處理架構

– JDK 1.1 之後 :Delegation Model 委託模式– JDK 1.0:Hierarchical model

Hierarchical Model Base on containment

Page 21: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Delegation Model 三個角色

– 事件本身 (xxxEvent)– 事件產生來源 (component)– 事件處理者 ( 繼承 xxxAdapter, 實作 xxxListener)

委託addXXXListener()

取消委託removeXXXListener()

Page 22: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

AWT Event 類別架構– Semantic event – Low level event

Semantic event .

Low Level event

Page 23: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Semantic event事件類別 產生事件的元件 產生事件的時機

ActionEvent Button 按鈕被按下List Double click List 中項目MenuItem 選取功能表項目TextField 按下 Enter 鍵

AdjustmentEvent Scrollbar 捲軸捲動ItemEvent Checkbox 狀態改變時

CheckboxMenuItem 勾選功能表選項Choice 選取下拉式選單中項目List 選取 List 項目

TextEvent TextField 文字內容改變TextArea 文字內容改變

Page 24: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

High Level Event Behavior

事件類別 可使用的 Listener Listener中宣告MethodsAction ActionListener actionPerformed(ActionEvent)

Adjustment AdjustmentListener adjustmentValueChanged(AdjustmentEvent)

Item ItemListener itemStateChanged(ItemEvent)

Text TextListener textValueChanged(TextEvent)

Page 25: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

事件類別 可使用的 Listener Listener中宣告MethodsMouse motion MouseMotionListener mouseDragged(MouseEvent)

mouseMoved(MouseEvent)Mouse button MouseListener mousePressed(MouseEvent)

mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)

Key KeyListener keyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)

Focus FocusListener focusGained(FocusEvent)focusLost(FocusEvent)

Low level Event Behavior

Page 26: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

事件類別 可使用的 Listener Listener中宣告MethodsWindow WindowListener windowClosing(WindowEvent)

windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)

Component ComponentListener componentMoved(ComponentEvent)componentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)

Container ContainerListener componentAdded(ContainerEvent)componentRemoved(ContainerEvent)

Low level Event Behavior

Page 27: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Window Event事件方法 產生原因

windowActivated(WindowEvent) 變為前景視窗時windowDeactivated(WindowEvent) 變為背景視窗時windowIconified(WindowEvent) 視窗縮到最小windowDeiconified(WindowEvent) 視窗放到最大windowOpened(WindowEvent) 視窗打開時windowClosed(WindowEvent) 視窗關閉後windowClosing(WindowEvent) 正在關閉視窗時

Page 28: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Mouse Event事件方法 產生原因

mouseDragged(MouseEvent) 拖曳滑鼠mouseMoved(MouseEvent) 移動滑鼠mousePressed(MouseEvent) 按下滑鼠按鍵mouseReleased(MouseEvent) 放開滑鼠按鍵mouseEntered(MouseEvent) 滑鼠游標進入 Componen

tmouseExited(MouseEvent) 滑鼠游標離開 Componen

tmouseClicked(MouseEvent) 按一下滑鼠按鍵

Page 29: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Key Event事件方法 產生原因

keyPressed(KeyEvent) 按一下鍵盤按鍵keyReleased(KeyEvent) 放開鍵盤按鍵keyTyped(KeyEvent) 按一下可產生可見字元的按鍵

Page 30: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Other low-level event事件方法 產生原因

componentAdded(ContainerEvent) 有 component 加入componentRemoved(ContainerEvent) 有 component 移除

事件方法 產生原因focusGained(FocusEvent) 元件得到駐點focusLost(FocusEvent) 元件失去駐點

Page 31: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt
Page 32: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Listener vs. AdapterListener名稱 Adapter名稱

ActionListener 無AdjustmentListener 無ItemListener 無TextListener 無MouseListener MouseAdapterMouseMotionListener MouseMotionAdapterKeyListener KeyAdapterFocusListener FocusAdapterWindowListener WindowAdapterContainerListener ContainerAdapterComponentListener ComponentAdapter

Page 33: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

AWT 元件 常用元件

– Button– Checkbox– Radio button (CheckboxGroup)– Choice– Canvas– Label– TextArea– TextField– List– Dialog

Page 34: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Button

Page 35: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Checkbox

Page 36: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Radio button

Page 37: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Choice

Page 38: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

List

Page 39: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Label

Page 40: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Scrollbar

Page 41: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

ScrollPane

Page 42: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

TextField

Page 43: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

TextArea

Page 44: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

AWT 進階元件 常用元件

– Font– Color– Menu– Dialog– FileDialog

Page 45: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Font

Page 46: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Color

Page 47: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

MenuMenuBar

MenuFile, Edit, Help

MenuItemNew, Save, Load, Exit

Page 48: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

Dialog

Page 49: AWT  認識 AWT  容器與版面配置  事件處理  AWT 元件使用. 認識 AWT  GUI ( graphical user interface)  AWT(Abstract Window Toolkits)  Package java.awt

FileDialog