




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、用戶圖形界面概念和設計2本章目標了解抽象窗口工具包 (AWT)和Swing的概念及區別掌握Swing容器組件JFrame 、JPanel、JScrollPane掌握Swing GUI 組件JLabel、JTextField、JTextArea、JButtonJCheckBox、JRadioButton、JComboBox運用以上組件進行圖形界面設計理解事件監聽器理解理解委托事件處理模型,掌握不同組件、不同事件的事件處理方法,理解布局管理器BorderLayout 、FlowLayout、GridLayout、AbsoluteLayout3AWT 概述創建 GUI通過java.awt 包容器組件
2、 布局管理器字體事件圖形和繪制方法包含 AWT 容器組件以圖形表示的對象允許用戶交互創建并構造用于選擇新字體的對象用于用戶和系統交互AWT包含內容 使用 AWT 圖形方法相對于窗口繪制圖形 定義 GUI 組件的位置AWT( 重量級組件)4Swing 2-1創建 GUI通過Javax.swing 包Swing 包含內容 容器組件 可改變的外觀Java2D圖形繪制包含 Swing 組件以圖形表示的對象允許用戶交互使用Java2D繪制圖形 可更換圖形界面的風格Swing(輕量級組件,純Java組件)5輕量級組件 可改變的外觀MVC 結構 性能更穩定優點Swing 2-2Swing (與AWT相比)6
3、Swing 容器組件 3-1 主窗口Swing 應用程序創建容器設置容器大小(對框架及面板而言)設置容器可見度(對框架及面板而言)創建頂層容器頂層容器(每個應用程序中至少有一個)內容面板主要顯示區域包含 GUI 中的可視組件7 javax.swing 包 常見容器JFrame JScrollPane JPanel 1. 擴展 java.awt.Frame 類2. 用于在 Swing 程序中創建窗口3. 包含邊框、標題和用于關閉和圖標化窗口的按鈕1. 中間容器2. 用于將較小的輕量級組件組合在一起3. 與內容窗格相似,面板在默認情況下不透明管理視區、滾動條及可選的行和列的標題視區Swing 容器
4、組件 3-2 8Swing 容器組件 3-3 JFrame 類的方法JFrame() JFrame(String title)void pack()void setSize(int width, int height)Dimension getSize()void setTitle(String name)JPanel 類的方法JPanel()JPanel(LayoutManager layout) void add(Component comp)Void setLayout(LayoutManager layout)JScrollPane 類的方法 JScrollPane() JScroll
5、Pane(Component view)void setVerticalScrollBarPolicy(int const)void setHorizontalScrollBarPolicy(int const)9Eclipse安裝WindowBuilder插件1. 下載在官網查詢相應Eclipse的WindowBuilder下載地址,在表中點擊Release的 Link獲得下載地址參考:102. 在線安裝Select Help Install New Software. in the main menu to open the Install dialog11再彈出的窗口中單擊Add:在新窗
6、口中,Name一欄填寫要添加的插件名稱WindowBuilder,Location填寫WindowBuilder剛才復制的更新地址12確定后選中WindowBuilder的更新內容,然后不斷下一步就行了13使用 Eclipse的WB插件創建 JFrame 安裝WindowBuilder插件(把WB拷貝到在eclipse安裝目錄下的dropins中)在eclipse創建一個Jframe,在此容器上,依次增加組件1. 選擇JFrame2. 單擊Next1. 填入Name2. 點擊Finish點擊Design查看可視界面可視化的窗體可視化的各種組件組件的屬性Layout設置為Absolute14Sw
7、ing GUI 組件JTexFieldJComboBoxJCheckBoxJButtonJRadioButtonJLabelJTexArea示例演示15JLabel 2-1JLabel16 JLabel 2-2PropertiesDescription1. A label is not interactive and does not respond to any input events 1. Displays a label on form2. In Swing, labels can display text as well as imagesJLabel方法說明JLabel()JLab
8、el()創建一個默認的 JLabel 實例JLabel(String text)以指定的文本創建 JLabel 實例JLabel(Icon image) 以指定的圖像創建 JLabel 實例getText() 返回標簽顯示的文本字符串setIcon(Icon icon) 定義 標簽將顯示的內容setText(String text) 定義此組件將要顯示的單行文本17JTextFieldJTextField 2-118JTextField 2-2PropertiesDescription1. JTextField component allows entering/editing a singl
9、e line of text. 1. JTextField is a lightweight component that allows the editing of a single line of text JTextField方法說明JTextField() 構造一個新的文本輸入框 JTextField(String text) 構造一個新的文本輸入框 ,以指定文本作為初始文本setLineWrap(boolean wrap) 設置文本區的換行策略。True- 換行/false-不換行getColumns()返回文本字段中的列數setColumns(int columns)設置文本字段中
10、的列數,然后使布局無效setHorizontalAlignment(int value)設置文本字段中文本的水平對齊方式:JTextField. LEFTJTextField.CENTER JTextField.RIGHTgetText() 返回此 TextComponent 中包含的文本19JTextAreaJTextArea 2-120JTextArea 2-2屬性說明JTextArea 組件接受用戶輸入的多行文本JTextArea 允許用戶編輯已輸入的文本JTextArea說明描述JTextArea() 構造一個新的文本區 JTextArea(String text) 用指定的顯示文本構
11、造一個新的文本區setFont(Font f)設置文本區的字體getText() 獲取文本區中的文本字符串Append(String str)將給定文本追加到文檔結尾21JComboBoxJComboBox 2-122JComboBox 2-2屬性說明在 Swing 中,組合框由 JComboBox 類表示。ComboBox 是文本字段和下拉列表的組合,讓用戶可以鍵入值或從顯示給用戶的值中進行選擇方法說明JcomboBox()創建一個下拉框實例addItem(Object obj)將項添加至項的列表getItemAt(int index) 返回指定索引位置的列表項getItemCount()返
12、回列表(作為對象)中的項數getSelectedItem()將當前選擇的項作為一個對象返回getSelectedIndex()返回當前選擇項的索引位置問題:如何在可視化設計器中輸入列表項點擊model屬性,在Combox Model Items里面輸入列表項23JCheckBoxJCheckBox 2-1外邊的框使用Jpane組件,設置border屬性為LineBorder24JCheckBox 2-2方法說明JCheckBox( ) 創建初始非選中的復選框,且不帶文本或圖標 JCheckBox(String text) 用指定的文本創建初始非選中的復選框。JCheckBox(String t
13、ext, boolean selected) 用指定文本創建一個復選框,并指定是否初始選中該復選框isSelected()返回按鈕的狀態25JRadioButtonJRadioButton 2-126JRadioButton 2-2JRadioButton方法說明JRadioButton() 創建初始非選中的單選按鈕,不設置其文本JRadioButton(String text) 用指定的文本創建非選中的單選按鈕JRadioButton(String text, boolean selected) 用指定的文本和選擇狀態創建單選按鈕isSelected()返回按鈕的狀態問題:一組內多個Radi
14、oButton的互斥選中如何實現ButtonGroup group = new ButtonGroup();group.add(male_rbtn);group.add(female_rbtn);27JButtonJButton 2-1 28JButton 2-2屬性說明JButton 類派生自 javax.swing.AbstractButton 類,該類由 JComponent 擴展而來JButton 對象包含一個文本標簽、圖像圖標或兩者,描述按鈕、文本/圖標周圍的空白區域和邊框的用途方法說明JButton( ) 創建不帶文本和圖標的按鈕JButton(Icon icon) 創建帶圖標的按
15、鈕JButton(String text) 創建帶文本的按鈕JButton(String text, Icon icon) 創建帶文本和圖標的按鈕setEnabled(boolean b)啟用(或禁用)按鈕setRolloverIcon(Icon img)當鼠標經過時,顯示指定的圖標setSelectedIcon(Icon img)當選擇按鈕時,顯示 img 指定的圖標29事件處理程序 3-1 !用戶交互事 件單擊鼠標 按下/釋放鼠標按鈕 對象狀態改變調用事件處理確定發生的事件的類型 確定生成的事件的組件 編寫合適的代碼處理事件代理事件模型事件處理程序 3-2 31 源對象監聽器事件 傳播事件
16、實例方法傳遞途徑代理事件模型Swing 中的 GUI 組件 適配器對象Swing事件處理程序 3-3 Event 類接口ActionEventActionListenerAdjustmentEventAdjustmentListenerComponentEventComponentListenerFocusEventFocusListenerItemEventItemListenerWindowEventWindowListenerTextEventTextListenerMouseEventMouseListener, MouseMotionListenerKeyEventKeyListen
17、er32AWT的事件監聽接口WindowListener 窗口事件ActionListener 動作事件MouseMotionListener 鼠標移動事件MouseListener 鼠標事件KeyListener 鍵盤事件FocusListener 焦點事件事件監聽器接口的意義33AWT組件類中注冊事件監聽器的方法public abstract class Component extends Object implements ImageObserver, MenuContainer, Serializable public void addKeyListener(KeyListener l
18、) public void addMouseListener(MouseListener l) public void addMouseMotionListener(MouseMotionListener l) 34實現事件處理程序(JTextField)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 focus-gained事件右邊的列public void focusGained(FocusEvent e)實際操作35textField.addFocusListener(new FocusAdapter() public void focusGained(FocusEvent
19、 e) textField.setText(Gain Focus);public void focusLost(FocusEvent e) textField.setText(Lost Focus););36實現事件處理程序(JTextArea)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 Mouseentered/exit事件右邊的列public void mouseEntered(MouseEvent e) textArea.append(Mouse entern);當輸出的信息太多,如何增加滾動條?增加一個JScrollPane,然后將JTextArea拖入到JScrol
20、lPane中37實現事件處理程序(JCombox)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 itemstateChanged事件右邊的列public void mouseEntered(MouseEvent e) textArea.append(comboBox.getSelectedItem().toString()+n);38實現事件處理程序(JCheckBox)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 Actionperformed事件右邊的列public void actionPerformed(ActionEvent e) if(chckbxR
21、eading.isSelected()textArea.append(reading is selectedn );elsetextArea.append(reading is not selectedn );39實現事件處理程序(JRadioButton)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 changestateChanged事件右邊的列public void stateChanged(ChangeEvent e) if(rdbtnMale.isSelected()textArea.append(Male radio button is selectedn);els
22、etextArea.append(Male radio button is not selectedn);40實現事件處理程序(JButton)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 Actionperformed事件右邊的列public void actionPerformed(ActionEvent e) textArea.append(學生姓名 + textField.getText()+n);41設計用戶登錄界面登錄成功,顯示前面的Student界面登錄失敗,彈出消息框42布局管理器用戶界面上的屏幕組件可以按照一定的格式布局 例如水平排列,或按網格方式排列布局管理
23、器類是一組類,它實現 java.AWT.LayoutManager 接口幫助在容器中放置組件Java 中可用的各種布局如下:BorderLayoutFlowLayout GridLayoutAbsoluteLayout43BorderLayout 2-1上邊的組件 左邊的組件右邊的組件下邊的組件容器NorthSouthEastWestCENTER44WestEastBorderLayout 2-2上邊的組件 右邊的組件 左邊的組件下邊的組件容器NorthSouthCenter方法說明BorderLayout( ) 創建新的BorderLayout,組件之間沒有間距 setHgap(int hg
24、ap)將組件間的水平間距設置為指定的值setVgap(int vgap)將組件間的垂直間距設置為指定的值45FlowLayout 2-1容器流布局是面板的默認布局管理器左上角右下角依次排序的組件垂直或水平間距46FlowLayout 2-2容器流布局是面板的默認布局管理器左上角右下角順序排列的組件垂直或水平間距方法說明FlowLayout( ) 構造新的中間對齊的FlowLayout,將垂直和水平間距保留為 5 個像素setAlignment( int align)設置指定布局的對齊方式setHgap(int hgap)設置指定布局的水平間距setVgap(int vgap)設置指定布局的垂直
25、間距47GridLayout 2-1行列組件大小相同重新調整組件大小以適合各自的單元指定網格中的行數和列數,創建網格布局48GridLayout 2-2行列組件大小相同重新調整組件大小以適合各自的單元指定網格中的行數和列數,創建網格布局方法描述GridLayout( ) 創建網格布局,默認為每個組件占用一整列和一單行GridLayout(int rows, int cols) 用指定的行數和列數創建網格布局。 GridLayout(int rows, int cols, int hgap, int vgap) 用指定的行數和列數、指定的水平和垂直間距創建網格布局setColumns(int c
26、ols)將相應布局中的列數設置為指定值setHgap(int hgap)將相應布局中的水平間距設置為指定值setVgap(int vgap)將相應布局中的垂直間距設置為指定值setRows(int rows )將相應布局中的行數設置為指定值49Absolute Layout可以任意調節組件的位置和大小,布局靈活通常會使用這種布局方式50菜單組件使用菜單的兩種方式窗口菜單快捷菜單51菜單 2-1顯示一個項目列表,指明用戶可以執行的各項操作 文件編輯格式幫助字體段落項目符號和編號背景色紅色綠色黑色菜單子菜單52菜單 2-2包含 javax.swing 包的菜單類的類層次結構ObjectCompon
27、entContainerJComponentJMenuBarJSeparatorAbstractButtonJPopupMenuJMenuJCheckboxMenuItemJRadioButtonMenuItemJMenuItem53菜單欄JMenuBar 類JMenuBar文件編輯格式幫助新建打開關閉JMenuJMenuItem字體段落項目符號和編號背景色紅色綠色黑色粗體斜體54菜單JMenu 類JMenu 組件有兩個用途 當它添加至 JMenuBar 時,將顯示為文本字符串 當用戶單擊此菜單項時,則顯示一個彈出式菜單 JMenuJMenuItem JSeparator JCheckBoxM
28、enuItem JRadioButtonMenuItem 55菜單項JMenuItem類只要選中 JMenuItem,就會產生通過重寫 actionPerformed()方法進行處理的 ActionEvent JMenuItem 組件通常是 JMenu 或 JPopupMenu 中選項的標題 在 JMenuItem 中除了可以添加字符串外,還可添加圖標問題:如何生成二級子菜單56在JFrame中添加JMenuBar1. 選中JMenuBar2. 放到Frame的頂端57在JMenuBar上添加JMenu1. 選中JMenu2. 放到JMenuBar58JMenuItem 類 3-21. 選中J
29、MenuItem2. 放到文件JMenu下59文件菜單設計60格式菜單(字體)設計JCheckBoxMenuItem61格式菜單(背景色)設計JRadioButtonMenuItem62實現事件處理程序(JMenuItem)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 actoinperformed事件右邊的列public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null, 高級程序設計第6章菜單示例);以幫助菜單里面的“關于”菜單項為例子63實現事件處理程序(JCheckBoxMenu
30、Item)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 actoinperformed事件右邊的列public void actionPerformed(ActionEvent e) Font f = textArea.getFont(); if (checkBoxMenuItem.isSelected()textArea.setFont(new Font(f.getFontName(), Font.BOLD, f.getSize(); elsetextArea.setFont(new Font(f.getFontName(), Font.PLAIN, f.getSize();
31、以字體里的“粗體”菜單項為例子64實現事件處理程序(JRadioMenuItem)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 actoinperformed事件右邊的列public void actionPerformed(ActionEvent e) textArea.setBackground(Color.RED);首先將三個RadioMenuItem使用ButtongGroup方式設置為同一組65工具欄設計1. 選中JToolBar2. 放到菜單欄下面在將Jbutton拖入到ToolBar中,如可以使用工具欄設置TextArea的背景色。66實現事件處理程序(工具欄)單
32、擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 actoinperformed事件右邊的列public void actionPerformed(ActionEvent e) textArea.setBackground(Color.RED);67JPopupMenu 類 2-1用于顯示展開形式的菜單可顯示在屏幕的任何地方 通常是由單擊鼠標右鍵觸發的激活彈出式菜單項之一所執行的操作總是依賴于上下文可供 JPopupMenu 類使用的方法68JPopupMenu 類 2-2加入PopupMenu的步驟把JPopupMenu的添加到目標區域在PopupMenu添加新的JMenuItem
33、69實現事件處理程序(快捷菜單)單擊檢查器的“Events”選項卡,顯示該按鈕組件的事件雙擊 actoinperformed事件右邊的列public void actionPerformed(ActionEvent e) System.exit(0);70對話框 4-1Java 中的對話框是一個容器,它充當父容器的子容器JOptionPane 這個類支持的功能有:布局標準對話框指定對話框的標題和文本提供圖標和自定義按鈕文本JOptionPane 可用于顯示各種圖標,如用于警告消息、問題、錯誤和信息等的圖標“消息”對話框“錯誤”對話框 “問題”對話框 71對話框 4-2以下是一些可供 JOpti
34、onPane 類使用的構造方法: JOptionPane() JOptionPane(Objectmessage) JOptionPane(Objectmessage, intmessageType) JOptionPane(Objectmessage, intmessageType, intoptionType) JOptionPane(Objectmessage, intmessageType, intoptionType, Icon icon) 72對話框 4-3JOptionPane 類的 showXxxDialog 方法是顯示模式對話框最常用的方法showXxxDialog show
35、MessageDialog() showOptionDialog() showXxxDialog() 方法的一些重載版本73對話框 4-4MethodsDescriptionvoid showMessageDialog(ComponentparentComponent, Objectmessage) 此方法顯示一則消息,即標題為“消息”的對話框。 void showMessageDialog(ComponentparentComponent, Objectmessage, Stringtitle, intmessageType) 此方法顯示使用由 messageType 參數確定的默認圖標來顯
36、示信息的對話框void showMessageDialog(ComponentparentComponent, Objectmessage, Stringtitle, intmessageType, Iconicon) 此方法顯示用于顯示消息和指定所有參數的對話框MethodDescriptionint showOptionDialog(ComponentparentComponent, Objectmessage, Stringtitle, intoptionType, intmessageType, Iconicon, Objectoptions, ObjectinitialValue)
37、此方法顯示具有指定圖標的對話框,其中初始選項由 initialValue 參數決定,而選項的數目由 optionType 參數決定74JColorChooser顏色選擇對鼠標右鍵-設置 菜單項,處理單擊事件public void actionPerformed(ActionEvent e) Color c = JColorChooser.showDialog(Component)e.getSource(), 選擇顏色, Color.BLUE);textArea.setBackground(c);75J文件選擇對文件-打開 菜單項,處理單擊事件J fc = new J();int rv = fc
38、.showOpenDialog(fc);String str = fc.getSelectedFile().getAbsolutePath();76Java沒有字體選擇器自定義Java字體選擇器77簡單文本編輯器的實現通過可視化組件完成界面設計給各個組件添加事件處理78圖形圖像繪圖坐標系繪圖類組件繪圖方法畫布重新繪制圖形圖形設計79繪圖類public abstract class Graphics extends Object public abstract Color getColor(); /獲取當前顏色 public abstract void setColor(Color c); /設
39、置顏色 public abstract void drawLine(int x1, int y1, int x2, int y2); /畫直線 public void drawRect(int x, int y, int width, int height) /畫矩形 public abstract void fillRect(int x, int y, int width, int height); /填充矩形 public abstract void drawOval(int x, int y, int width, int height); /畫橢圓 public abstract vo
40、id drawString(String str, int x, int y); /顯示字符串 public abstract Font getFont(); /獲得顏色 public abstract void setFont(Font font); /設置顏色80組件繪圖方法public void paint(Graphics g) /組件繪制圖形畫布public Canvas() 重新繪制圖形public void repaint() /調用paint()方法刷新圖形【例6.7】 四葉玫瑰線的圖形設計。81小結Swing 是在AWT基礎上發展起來的輕量級組件,用于開發Java GUI 應用程序容器對象是能夠容納其他 Swing 組件的一種組件。容器負
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 細菌分類基礎試題及答案
- 2025年注會經濟法核心試題及答案
- 2025年注冊會計師復習側重點與方法指導試題及答案
- 2024年行政管理師考試策略分析的試題及答案
- 2024年項目管理考試的心態調整試題及答案
- 2025年證券從業考試指導試題及答案
- 視頻設計執行方案范本
- 衛生委考試面試題及答案
- 微生物檢驗技師證書考試試題及答案探究
- 稀土金屬加工質量改進工具應用案例考核試卷
- 安徽醫大麻醉學課件04全身麻醉
- 2022年上海市工業技術學校教師招聘筆試題庫及答案解析
- 《城鎮燃氣管理條例題庫》考試題庫150題(含答案)
- 工程項目施工過程中的安全分析報告(建設單位)
- 微機保護原理課件
- 復盤蘋果供應鏈發展歷程探尋特斯拉供應鏈長期成長標的
- 35kV落地手車式開關移動平臺的研制
- 國內外飲料灌裝生產線發展現狀
- 廣西水功能區劃報告-廣西水利信息網
- 道德與法治部編版六年級下冊同步練習試題及答案(全冊)
- 湖南省第十八屆普通高校大學生英語演講比賽暨第三屆“外研
評論
0/150
提交評論