Java Swing Comes from originallyhttp://debut.cis.nctu.edu.tw/~ching/

Slides:



Advertisements
Similar presentations
FCU, Department of ECE, IC Design Research Lab. TEL: # 4945 Pre-SIm , Post-Sim.
Advertisements

布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
第七章 抽樣與抽樣分配 蒐集統計資料最常見的方式是抽查。這 牽涉到兩個問題: 抽出的樣本是否具有代表性?是否能反應出母體的特徵?
Swing 井民全 製作
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
第二章 太陽能電池的基本原理 及其結構 2-1 太陽能電池的基本原理 2-2 太陽能電池的基本結構 2-3 太陽能電池的製作.
3Com Switch 4500 切VLAN教學.
PowerPoint2010 李燕秋 版面配置 版面配置指的是每一個頁面的內容配置 方式,不同的版面配置會有對應的母片。
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
Java Swing (View) Comes from originallyhttp://debut.cis.nctu.edu.tw/~ching/
指導教授:陳淑媛 學生:李宗叡 李卿輔.  利用下列三種方法 (Edge Detection 、 Local Binary Pattern 、 Structured Local Edge Pattern) 來判斷是否為場景變換,以方便使用者來 找出所要的片段。
1 第一章 Word 的基本觀念 內容概要: Word 的特色 啟動與離開 Word 的方法 滑鼠游標與外型的介紹 基本操作 Word 視窗法則 使用 Word 遭遇問題時, 應如何利用軟體特 性而獲得輔助解說.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 參 實驗法.
五小專案 黃詩晴 章乃云. 目錄 計算機 智慧盤 拼圖 記憶大挑戰 數學題庫 心得 參考文獻.
亂數產生器安全性評估 之統計測試 SEC HW7 姓名:翁玉芬 學號:
: ShellSort ★★☆☆☆ 題組: Problem D 題號: 10152: ShellSort 解題者:林一帆 解題日期: 2006 年 4 月 10 日 題意:烏龜王國的烏龜總是一隻一隻疊在一起。唯一改變烏龜位置 的方法為:一隻烏龜爬出他原來的位置,然後往上爬到最上方。給 你一堆烏龜原來排列的順序,以及我們想要的烏龜的排列順序,你.
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
1 網路同步學習 如何使用中山大學管理學院知識管理平台 愷中 製作. 2 如何登入中山大學網路學習平台 1. 首先, 請輸入 2. 點選申請帳號, 依照螢幕所示, 輸入個人資訊.
Monte Carlo Simulation Part.2 Metropolis Algorithm Dept. Phys. Tunghai Univ. Numerical Methods C. T. Shih.
JAVA 程式設計與資料結構 第十章 GUI Introdution III. File Chooser  File Chooser 是一個選擇檔案的圖形介面, 無論我們是要存檔還是要開啟檔案,使 用這個物件都會讓我們覺得容易且舒適。
第 9 章 視窗應用程式的事件處理 9-1 事件的基礎 9-1 事件的基礎 9-2 表單事件 9-2 表單事件 9-3 滑鼠事件 9-3 滑鼠事件 9-4 鍵盤事件 9-4 鍵盤事件 9-5 表單的鍵盤事件 9-5 表單的鍵盤事件 9-6 控制項的事件 9-6 控制項的事件.
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
24-6 設定開始與結束場景中的 程式 最後我們要替這個遊戲收個尾, 幫它把開始 的等待畫面跟結束畫面處理一下。
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
最新計算機概論 第 5 章 系統程式. 5-1 系統程式的類型 作業系統 (OS) : 介於電腦硬體與 應用軟體之間的 程式,除了提供 執行應用軟體的 環境,還負責分 配系統資源。
3-3 使用幾何繪圖工具 Flash 的幾何繪圖工具包括線段工具 (Line Tool) 、橢圓形工具 (Oval Tool) 、多邊星形 工具 (Rectangle Tool) 3 種。這些工具畫出 來的幾何圖形包括了筆畫線條和填色區域, 將它們適當地組合加上有技巧地變形與配 色, 不但比鉛筆工具簡單,
Matlab Assignment Due Assignment 兩個 matlab 程式 : Eigenface : Eigenvector 和 eigenvalue 的應用. Fractal : Affine transform( rotation, translation,
Chapter 20 塑模動態觀點:狀態圖 Statechart Diagram. 學習目標  說明狀態圖的目的  定義狀態圖的基本記號  展示狀態圖的建構  定義活動、內部事件及遞延事件的狀態 圖記號.
圖層的操作與管理 圖層的作用就如同一張張透明的賽璐璐片, 你可以將動畫中的每項物件, 放置在不同圖 層中, 圖層交疊就形成完整的畫面。在各圖 層中的物件, 做任何的移動或變化, 都不會 相互干擾, 所以當你編輯一個物件時, 只要 在物件所在的圖層進行操作, 將可大幅降低 製作過程的複雜度與難度。
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
資料庫程式設計與系統管理 SQL Server 2005 Express 第六章 進階資料庫設計.
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
1-6 動畫的文件屬性 舞台是動畫實際播放的畫面, 所以舞台的大 小與長寬比例對將來動畫的呈現有很大的 影響。 Flash 預設的舞台尺寸是 550 Pixels × 400 Pixels, 背景為白色, 如果要更改舞台大小與 背景色, 請執行『修改 / 文件』命令, 開啟文 件屬性 (Document.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
從此處輸入帳號密碼登入到管理頁面. 點選進到檔案管理 點選「上傳檔案」上傳資料 點選瀏覽選擇電腦裡的檔案 可選擇公開或不公開 為平台上的資料夾 此處為檔案分類,可顯示在展示頁面上,若要參加 MY EG 競賽,做品一律上傳到 “ 98 MY EG Contest ” 點選此處確定上傳檔案.
資料結構實習-一 參數傳遞.
6-2 認識元件庫與內建元件庫 Flash 的元件庫分兩種, 一種是每個動畫專 屬的元件庫 (Library) ;另一種則是內建元 件庫 (Common Libraries), 兩者皆可透過 『視窗』功能表來開啟, 以下即為您說明。
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
Management Abstracts Retrieval System; MARS 檢索操作.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/25 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH 2.4~CH 2.6 &
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
Linguistics phonetic symbols. 先下載 IPA 字型檔案,執行安裝。 由於這個程式的字型目錄設定錯誤, 所以等重新開機時就會發現字型消失。 所以必須根據以下步驟來讓 Windows 加入 IPA 字型。
Chapter 10 m-way 搜尋樹與B-Tree
概念性產品企劃書 呂學儒 李政翰.
Probability Distribution 機率分配 汪群超 12/12. 目的:產生具均等分配的數值 (Data) ,並以 『直方圖』的功能計算出數值在不同範圍內出現 的頻率,及繪製數值的分配圖,以反應出該 機率分配的特性。
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
: Wine trading in Gergovia ★★☆☆☆ 題組: Contest Volumes with Online Judge 題號: 11054: Wine trading in Gergovia 解題者:劉洙愷 解題日期: 2008 年 2 月 29 日 題意:在 Gergovia.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 壹 企業研究導論.
函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.
指導教授 : 林啟芳 教授 組員 : 邱秉良 林育賢. 何謂 GPS  GPS 即全球定位系統,是一個中距離圓 型軌道衛星導航系統。它可以為地球表面 絕大部分地區( 98% )提供準確的定位、 測速和高精度的時間標準。
Visual C++重點複習.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2008.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
Microsoft Excel.
Introduction to Java Programming Lecture 16 Super and Sub Classes.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
幼兒行為觀察與記錄 第八章 事件取樣法.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2009.
CH 14-可靠度工程之數學基礎 探討重點 失效時間之機率分配 指數模式之可靠度工程.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
1 柱體與錐體 1. 找出柱體與錐體的規則 2. 柱體的命名與特性 3. 柱體的展開圖 4. 錐體的命名與特性 5. 錐體的展開圖
Presentation transcript:

Java Swing Comes from originallyhttp://debut.cis.nctu.edu.tw/~ching/

AWT  AWT  AWT delegates the drawing operations to the underlying OS  Under Windows, we have a MS-Style window  Under MAC, we have a MAC-Style window

Swing  Swing 不使用 OS 的 toolkit 來建立使用者介面, 所有的元件都由 java 自己提供, 不管在哪一個平台上執行, 按鈕都長的一樣  如何使用 Swing ? 1. 組合預先建造好的元件 2. 把它們放到容器 (container) 中 3. 利用版面管理員製造更複雜的介面 Swing 利用版面管理員 (layout manager) 來管理容器內的元件, 控制它 們的大小及位置  相對位置取代絕對位置 ( 直接用座標控制 ): 好處是當使用者重新 改變視窗大小時, 你可以確定其元件可以在正確位置上出現

元件  Swing 元件必須放置在容器中才可以使用, 而容器負責將元件分類, 讓它們可以 被版面管理員顯示  所有的 Swing 元件都是抽象類別 javax.swing.JComponent 繼承而來的  如 JButton 是 AbstractButton 的子類別, 而 AbstractButton 又是 JComponent 的子類別  JComponent 是 Swing 元件階層的 root 我們可以說 Swing 是 AWT 的大延伸 因為 JComponent 類別是從 Container 類別繼承而來 所以他同時具備元件與容器的特性

JComponent 類別的功能分成兩類  控制外觀 : 顯形 / 隱形, 元件大小與位置, 字型與顏色  當元件顯示時, JComponent 負責與顯示裝置作關聯, 並處理繪圖  元件的行為 : 處理對使用者產生的事件作出反應  當使用者在元件的顯示區域作出動作, Swing 的執行緒會送出一個 事件來描述 [ 發生了甚麼事 ] [ 註冊 ] 若你被按下時, 請通知我 1 2 物件 1 物件 2 物件 1 物件 2 當使用者發出事件時, 根據註冊列表 傳送事件給聆聽者

事件 (Event)  當使用者按下一個按鈕時, 按鈕會傳送一個 ActionEvent 物 件給所有的註冊者  如果要接受這事件, 則必須要向該按鈕註冊 ( ActionListener )  事件接受者必須實作 method 來接受按鈕傳來的事件  特定的事件可以由不同種類元件產生  MouseEvent --> 滑鼠在元件區域中的行為  KeyEvent  鍵盤按鍵的行為  高階事件 (ex: ActionEvent)  代表使用者介面元件完成其工作

容器 的重大責任  負責排列它所包含的元件  若一個元件改變了大小或可見度, 則必須通知它的容器  容器則通知版面管理器來整理容器中的子元件 Swing 的元件同時也是容器 (Container) 容器可以直接排列管理它裡面的 JComponent 物件 你不需要知道這些物件是甚麼 ? 有何功用 ? 你可以自由抽換容器內的元件或組合更複雜的使用者介面元件

對等物  我們的元件必須包含原生方法的物件溝通, 才能與實際的 作業系統互動 (AWT 對等物介面 )  Ex. 要把資料顯示在螢幕上, 從輸入裝置讀取資料, 則必須由 Java 的世界跳到真實作業環境  AWT 使用許多對等物  一個元件對應一個對等物 Ex. 若你建立一個視窗, 在裡面加入 8 個按鈕 AWT 會建立 9 個對等物 : ( 一個視窗,8 個按鈕對等物 )  Swing 的元件幾乎是不對等的 ( 輕小元件 )  Swing 元件與 os 沒有互動  元件的繪製與 User 事件回應  由 parent container 負責處理

使用輕小元件的原因  因為是元件自己繪製自己的外框, 所以可以動態的決定如何繪製  Swing 支援不同的 Look and Feel  我們可以動態的改變外觀 ( 預設值是 Metal)  使用對等物的方式很難改變元件的特性  因為對等物是由 OS 提供  使用作業系統原生碼,將使程式移植變的困難  原生對等物沒有效率  Ex. 若使用 AWT 的 TextField 作為試算表的 cell, 建立數百個 TextFieldzPeer 非常沒有效率 為何不用 AWT

MVC 架構  Model/View/Control 架構的目的是建立一個可以重複使用 元件的方法  依照資料結構, 顯示方式, 行為區分成不同的部分  主要適用於 GUI 元件的設計上 ( 但也可以應用到設計上 )  MVC 的基本概念 :  把資料模型與資料顯示區隔開來  Ex. 試算表的資料可以用長條圖或圓餅圖表示, 其中資料  model, 不同 的表示方式  View  Control 則是控制元件的行為  當資料改變時, 顯示的部分亦要改變  detailed.html detailed.html

MVC architectural pattern

繪圖  Swing 元件可能在任何時候被要求重畫外觀  Ex: 當一個視窗將元件蓋住, 之後又離開. 這時 swing 的執行緒將會要求元 件重畫外觀  Swing 是藉由 paint ( ) method 進行重畫的動作  paint 可能在任何時後被呼叫  一個元件需要被重畫時, 改由透過 repaint() method 來安排呼叫 paint()  有效率的繪圖  同時有太多重畫的要求或對同一個元件有許多的要求, 執行緒會重新安排 並想辦法解化成一個 paint 呼叫  repaint 亦可以自訂一定時間內畫面要被更新  無論是 paint 或 paintComponent() 都有一個參數  Graphics 物件 => 代表元件的繪圖內容, 他提供了基本繪圖與圖片處理的方 法

Swing 元件自己負責它的繪圖  Swing 元件可以容納其他的元件, 故有必要告知他所容納的 所有元件作出重畫 public void paint(Graphics g) { super.paint(g); // 呼叫子元件重畫 … } 一個簡單的例子 : 1.Frame 先畫自己 2.content pane first paints its background, then ask its child, JPanel, to paint. 3. JPanel a. background b. border c. children 4. JButton a. background b. text c. focus 5. JLabel

Custom Painting  Your custom painting code belongs in a method named paintComponent class ImagePanel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); //paint background //Draw image at its natural size first. g.drawImage(image, 0, 0, this); //85x62 image //Now draw the image scaled. g.drawImage(image, 90, 0, 300, 62, this); } ImageDisplayer.java

Enable the component  每個標準的 Swing 元件都有 setEnabled() 決定 enable or disable  Ex: 當 JButton 或 JTextField 的元件被 disable, 將不接受任何的輸入反應  如何製作一個只被使用一次的元件  當我們按下 JButton 時, 它會產生一個 ActionEvent  這個事件會傳送給聆聽者的 actionPerformed() 方法  聆聽者利用 getSource() 方法來找到產生事件的元件 public boolean void actionPerformed(ActionEvent e) { … ((JComponent) e.getSource()).setEnabled(false); } 聆聽者

Focus  元件焦點 : 指的是目前被選取的輸入元件  為了要接受鍵盤上的事件, 元件通常會有鍵盤焦點  我們可以用 JComponent 的 requestFocus() 要求取得焦點  JTextField, JTextArea 等文字元件, 在其區域中按下滑鼠則會自動取得焦 點  若你希望某個元件得到焦點後, 通知你則必須實做 FocusListener 介 面  Ex: 當元件被選擇後, 改變滑鼠的樣式  當使用者按下 [tab], 焦點會轉移到下一個可用的元件上  JComponent 提供 transferFocus(), setNextFocusableComponent(), setFocusTraverable().

Swing 元件的一些 method Container getParent() 傳回包含該元件的容器 String getName() void setName(string name) 指定一個字串作為該元件的名稱 ( 該名稱會由 toString() 方法傳回 ) void setVisible(boolean visible) 決定該元件在容器中是否可見 設定及取得元件的前景和背景顏色 ( 對傳給 paint() 和 paintComponent() 的 Graphics 物件來說, 前景  繪圖顏色 背景  元件區域被 update () 時填滿的顏色 ) Color getForeground() void setForeground(Color c) Color getBackground() void setBackground(Color c)

取得及設定元件的大小 ( 版面管理員會改變元件大小 ) Dimension getSize() void setSize(int W, int H) 版面管理員 會嘗試使用最佳元件尺寸設定元件 Dimension getPreferredSize() void setPreferredSize(Dimension preferedsize) 取得及設定滑鼠樣式 Cursor getCursor() void setCursor(Cursor cursor) Ex: JComponent myComponent = …; Cursor crossHairs= Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR) myComponent.setCursor(crossHairs);

容器 (Container)  容器是一種元件用來管理以及容納其他元件  JComponent 繼承 Container  是容器  最常用的三種容器  JFrame, JPanel, JApplet JFrame 最上層的視窗 最上層的視窗 JPanel 用來管理 JFrame 與 JPanel 中的元件

每個容器都有一個列表, 紀錄所有的 child 元件  除了 JFrame 和 JWindow 外, 其他元件和容 器都是 lightweight  大部分的元件要加入容器並顯示出來才有 作用 add

版面管理員 (Layout manager)  控制容器中元件的大小及位置  預設管理員 : 每個容器都有預設管理員  可使用 setLayout() 方法使用其他的管理員 元件預設版面管理員描述 JPanelFlowLayout 排列元件 : 由左到右 由上到下 JFrameBorderLayout 排列元件 : 把元件依照方位排列 在視窗中 ( NORTH, SOUTH, CENTER) EX: myContainer.add(myComponent, BorderLayout.NORTH);

Case Study: 陽春月曆  Check CalendarPanel.java