1. 程式人生 > >201711671235學習《java程式設計》第九周學習總結

201711671235學習《java程式設計》第九周學習總結

教材學習內容總結

1.JavaSwing概述

java的java.awt包(Java抽象工具包)提供了許多設計GUI的元件類

Component類的子類或間接子類建立的物件 元件
Container的子類或間接子類建立的物件 容器

容器—呼叫—>public add()方法==》把元件(容器)—新增—>該容器(容器的巢狀)

容器—呼叫—>removeAll()| remove(Component 0c)==》移除容器中所有元件/引數c指定的元件

容器<==>元件

容器新增/移除元件時,讓容器呼叫validate()方法==》保證容器中的元件能正確實現

2.視窗

Component<-Container<-

                          JComponent                   

 JPasswordFiled  JcomDoBox  JRadioButton  JCheckBox  JButton  JTextField  JTextArea  JTree  JTable  Jpanel

       密碼框            下拉列表          單選按鈕         複選框     文字按鈕    文字框      文字區    樹元件   標籤     面板

                                                                             Window

                       Frame                                                                                                           Dialog

  JFrame/子類->建立物件==形成==>視窗<==放進= =元件(x視窗)                       JDialog->建立物件==形成==>對話方塊

2.1JFrame常用方法

JFrame(String s) 建立標題為s的視窗
public void setBound(int a,int b,int width,int height) (a,b)設定視窗具體位置,即距螢幕左面a個畫素....,width為視窗寬,height為高
public void setSize(int width,int height) 設定視窗大小
public void setLocation(int x,int y) 設定視窗位置

public void setVisible(boolean b)

設定視窗是否可見,預設不可見
public void setResizable(boolean b) 設定視窗是否可調整大小,預設可以
public void dispose() 撤銷當前視窗,並釋放當前視窗所使用的資源
public void setDefaultCloseOperation(int operation) 設定右上角關閉圖示

operation取值 DO_NOTHING_ON_CLOSE(什麼不做)

HIDE_ON_CLOSE(隱藏當前視窗)

DISPOSE_ON_CLOSE(隱藏當前視窗並釋放視窗使用的其他資源)

EXIT_ON_CLOSE(結束視窗所在應用程式)

2.2選單條、選單、選單項

選單條由JMenuBar類建立,選單由JMenu類建立、選單項由JMenuItem類建立,嵌入子選單由JMenu類(JMenuItem的子類)建立

選單條(選單(子選單(選單項)+選單項))

選單上的圖示:Icon icon=new Imagelcon(“a.gif”),Icon宣告一個圖示,使用其子類ImageIcon類建立一個圖示

3.1常用容器

3.1.1IPanel面板(預設FlowLayout佈局)

元件==新增==>面板==新增==>容器

JTabbedPane選項卡窗格 建立JTabbedPane容器:public JTabbedPane(int tabPlacement)(tabPlacement確定選項卡位置) 一個選項卡對應一個元件 add(String text,Component c)(把元件c1新增到JTabbedPane中,並指定和元件c對應的選項卡的文字提示是text)
滾動視窗JScrollPane   只能新增一個元件,通過滾動條觀看元件 JTextArea(文字框)不自帶滾動條,JScrollPane scroll=new JScrollPane(new JTextArea())
拆分視窗JSplitPane

JSplitPane(int a,Component b,Component c)

JSplitPane(int a,boolean b,Component c,Component d)

a:HORIZONTAL_SPLIT(水平)||VVERTICAL_SPLIT(垂直)

 

拆分成兩部分(左右||上下)  
b決定當拆分線移動時,元件是否連續變化
JLayeredPane分層視窗       add(JComponent com,int layer)(layer指定元件com所在層)

3.1.2常用佈局

設定佈局:setLayout(佈局物件)

FlowLayout佈局(FlowLayout()) 從左到右排列居中對齊 元件呼叫public void setPreferredSize(Dimension preferredSize)
BorderLayout佈局

分為東南西北中五個區域(中間的區域最大)

元件會被替換

容器.add(元件,BorderLayout.CENTER/NORTH/SOUTH/WEST/EAST)
CardLayout佈局 先來在上,依次向下排序

a.CardLayout card=new CardLayout()(建立CardLayout物件作為佈局)

b.con.setLayout(card)(使用容器的setLayout()方法為容器設定佈局)

c.con.add(String s,Component b)(將b加入容器,s是代號)

d.card.show(con,s)(顯示容器con中元件代號為s的元件)

GridLayout佈局 順序放在網格(網格大小相同,元件與其大小也相同),最多新增m*n個元件  
null佈局

setBounds(int a,int b,int

width,int height)(有絕對定位)

位置不會隨對話方塊大小變化

BoxLayout佈局 盒式容器(行列形容器)  

4.處理事件

4.1事件處理模式

事件源 能夠產生事件的物件
監視器 對物件的事件源進行監視(addActionListener(監視器))
處理事件的介面 監視器物件的類宣告實現相應的介面,以便事件源出發監視器時監視器可以呼叫介面方法處理事件

4.2事件

  ActionEvent事件 ItemEvent事件 DocumentEvent事件 MouseEvent事件 焦點事件 鍵盤事件
事件源

文字框、按鈕、選單項、密碼框、單選框

選項框、下拉列表 文字區 任何元件 元件 按下、釋放或敲擊鍵盤
註冊監視器 addActionListener(ActionListener listener) addItemListener(ItemListener listen)

addDocumentListener(DocumentListener listen)

addMouseListener(MouseListener listener) addFocusListener(FocusListener listener)  
介面

在java.awt.event包中,事件被觸發,監視器.actionPerformed(ActionEvent e)處理事件

在java.awt.event包中,事件被觸發,監視器.itemStateChanged(ItemEvent e)處理事件

介面方法:a.public void changedUpdate(DocumentEvent e)

b.public void removeUpdate(DocumentEvent e)

c.public void insertUpdate(DocumentEvent e)

處理的事件:(在事件源上)a.按下滑鼠

b.釋放滑鼠

c.單擊滑鼠

d.滑鼠進入(退出)事件源

介面方法:a.public void focusGained(FocusEvent e)

b.public void focusLost(FocusEvent e)

介面方法:a.public void keyPressed(KeyEvent e)

b.public void keyTyped(KeyEvent e)

c.public void KeyReleased(KeyEvent e)

方法

a.public Object getSourse()

b.public String getActionCommand()

ItemEvent事件物件.getSource()||getItemSelectable()返回ItemEvent事件的事件源  

a.getX/y()獲取滑鼠在事件源座標系中的x/y座標

b.getModiifiers()獲取滑鼠的左鍵或右鍵

c.getCilckCount()獲取滑鼠被單擊的次數

d.getSourse()獲取發生滑鼠事件的事件源

public boolean requestFocusInWindow()獲取輸入焦點 public int getKeyCode()判斷哪個鍵被按下、釋放或敲擊

4.3事件總結

4.3.1授權模式

事件源呼叫方法將某個物件註冊為自己的監視器

4.3.2介面回撥

當事件源發生時介面立馬回撥被類實現的介面中的某個方法

4.3.3方法繫結

監視器必須繫結某個方法來處理事件

4.3.4保持鬆耦合

儘量讓事件源所在的類和監視器是組合關係

2.使用MVC結構

模型(M):儲存資料的物件

檢視(V):為模型提供數顯示的物件

控制器(C):處理使用者互動操作,對於使用者的操作作出響應,讓模型和檢視進行必要的互動,即通過檢視修改,獲取模型的資料;當模型中的資料變化時,讓檢視顯示。

6.對話方塊

有模式對話方塊:當對話方塊處於啟用狀態,只能讓程式響應對話方塊,且將阻塞其他執行緒執行,使用者不能啟用對話方塊所在程式的其他視窗,直到對話方塊消失不見

  訊息對話方塊 輸入對話方塊 確認對話方塊 顏色對話方塊 自定義對話方塊
  有模式 有模式(有輸入文字的文字框、確認和取消按鈕) 有模式    
靜態方法 public static void showMessageDialog(Component parentComponent,String message,String title,int messageType) public static void showInputDialog(Component parentComponent,Object message,String title,int messageType) public static void showConfirmtDialog(Component parentComponent,Object message,String title,int messageType) public static Color showDialog(Component component,String title,Color initialColor)

a.JDialog()

b.JDialog(JFrame owner)

解釋

parentComponent:可見對話方塊的位置

message:對話方塊顯示的資訊

title:對話方塊標題

messageType:外觀

parentComponent:指定對話方塊依賴的元件(parentComponent為null時,元件在螢幕正方顯示)

message:對話方塊提示的資訊

title:對話方塊標題

messageType:外觀

parentComponent:指定對話方塊可見位置(parentComponent為null時,元件在螢幕方顯示)

message:對話方塊提示的資訊

title:對話方塊標題

messageType:外觀

component:對話方塊可見位置

title:對話方塊標題

initialColor:顏色對話方塊返回的初始顏色

a.構造一個無標題的始終不可見的對話方塊

b.構造一個無標題的始終不可見的無模式的對話方塊(owmer是對話方塊依賴的視窗,owner為null時,對話方塊依賴一個預設不可見的視窗)

7.樹元件和表格元件

JTree類的物件稱為樹元件

  樹元件 表格元件
 

DefaultMutableTreeNode類實現了MutableTreeNode介面

所以DefaultMutableTreeNode建立的物件可以成為樹上的結點

以行和列的形式顯示資料
構造方法

a.DefaultMutableTreeNode(object userObject)

b.DefaultMutableTreeNode(object userObject,boolean allowChildren)

a.JTable()建立預設的表格模型

b.JTable(int a,int b)建立a行b列的預設模式表格

c.JTable(Object data[][],Object columnName[])建立預設表格模式物件,並顯示由data指定的二維陣列的值,其列名由陣列colunmnName指定

d.重新整理表格顯示:表格.repaint()

解釋

a.預設有子節點,用add()新增其他結點作為它的子節點

一個結點可以使用setAllowsChildren(boolean b)設定是否允許有子節點

 
事件 addTreeSelectionListener(TreeSelectionListener listener)獲得監視器  
介面方法:public void valueChanged(TreeSelectionEvent e)
樹使用getLastSelectionPathComponent()獲取選中的結點

8.按鈕繫結到鍵盤

8.1AbstractAction類和特殊的監控器

按鈕繫結鍵盤操作:將按鈕繫結到敲擊某個鍵

監視器:建立監視器的類必須實現ActionListener介面的子介面Action

8.2指定監視器的步驟

獲取輸入對映

按鈕呼叫public final InputMap getInputMap(int condition)返回一個InputMap物件

繫結按鈕的鍵盤操作

返回的對映呼叫public void put(KeyStroke keystroke,Object actionMapKey)將敲擊鍵盤上的某鍵指定為按鈕的鍵盤操作

為按鈕的鍵盤操作指定監視器

按鈕呼叫public final ActionMap getActionMap()返回一個ActionMap物件

ActionMap actionMap=button.getActionMap();

actionMap.呼叫public void put(Object key,Action action)為按鈕的鍵盤操作指定監視器(實現敲擊鍵盤上的鍵通知監視器

9.列印元件

步驟:

獲取ToolKit物件 元件呼叫getToolkit()返回系統提供的Toolkit物件的引用
獲得PrintJob物件

getPrintJob(Frame f,String s,null)獲取PrintJob物件

獲取Graphics物件 PrintJob物件使用getGraphics()獲取Graphiics物件
列印元件 元件呼叫paintAll(Graphics物件)列印該元件及其子元件
列印位置 為避免列印覆蓋,Graphics物件可以使用(Graphics類中方法)translate(int x,int y)改變元件在列印頁的列印位置

 

教材學習中的問題和解決過程

選單條、選單、選單項之間使用add()方法時新增和被新增的物件分不清楚:通過讀例題分析操作的過程

學習進度條

  程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 20篇 400小時 會用java語言獨立設計程式
第一週 13/13 1/1  5/5 學會使用jdk以及對java源程式語句的基本注意事項有所瞭解
第二週 140/143  1/2 10/15 學會java基本資料型別與陣列和c語言/c++在表達和用法上的相同/不同之處
第三週 276/419 1/3 20/35 java中運算子,表示式和語句的表現形式,類的宣告,定義方法
第四周 600/1019 1/4 30/45 類和物件
第五週

150/1169

1/5 10/55 繼承的作用,子類和父類的繼承性,子類繼承父類後方法的訪問許可權以及各種操作
第六週 100/1269 1/6 8/63 介面定義、使用方法和作用
第七週 100/1369 1/7 9/72 內部類(獨有)包含匿名類和異常類(檢測)的使用方法和作用
第八週 150/1869 1/8 10/82 java常用實用類和方法
第九周 100/1969 1/9 20/102 元件、容器、視窗、(如何處理事件:事件源,監視器、介面)

參考文獻

《java2實用教程(第5版)》