1. 程式人生 > >201711671105 《Java程式設計》第九章學習總結

201711671105 《Java程式設計》第九章學習總結

教材學習內容總結

1.Java Swing

元件與容器:

Java把component類的子類或間接子類建立的物件稱為一個元件;

Java把container的子類或間接類建立的物件稱為一個容器;

向容器新增元件: public add();

移除元件:removeAll()移除所有元件;  remove(component c)方法 ,移除指定元件c;

容器本身也是一個元件,可以把一個容器新增到另一個容器中實現容器的巢狀;

每當容器新增新的元件或移掉元件時,應當讓容器呼叫validate()方法,保證容器中的元件能正確顯示出來。

2.視窗

Java提供的JFrame類的例項就是一個底層容器,也就是視窗。

其他元件必須被新增到底層容器中。

當需要一個視窗時,可使用JFrame或其子類建立一個物件。

視窗也是容器,可以新增元件。

注:視窗預設被系統新增到顯示器螢幕上,因此不允許將一個視窗新增到另一個容器中。

2.1常用方法:

JFrame()//建立一個無標題的視窗。

JFrame(String s)//建立標題為s的視窗。

public void setBounds(int a,int b,int width,int height)//設定視窗的初始位置是(a,b),即距螢幕左面a個畫素,距螢幕上方b個畫素,視窗的寬是width,高是height。

public void setSize (int width,int height)//設定視窗的大小。

public void setLocation (int x,int y)//設定視窗的位置,預設位置是(0,0)。

public void setVisible (boolean b)//設定視窗是否可見,預設不可見。

public void setResizable (boolean b)//設定視窗是否可調整大小,預設可調整大小。

public void dispose () //撤銷當前視窗,並釋放當前視窗所使用的資源。

public void setExtendedState(int state) //設定視窗的擴充套件狀態,其中引數state取JFrame類中的下列類常量:
MAXIMIZED_HORIZ (水平方向最大化),
MAXIMIZED_VERT (垂直方向最大化),
MAXIMIZED_BOTH (水平、垂直方向都最大化)。

public void setDefaultCloseOperation(int operation)該方法用來設定單擊窗體右上角的關閉圖示後,程式會做出怎樣的處理。其中的引數operation取JFrame類中的下列int型static常量,程式根據引數operation取值做出不同的處理:
DO_NOTHING_ON_CLOSE(什麼也不做),
HIDE_ON_CLOSE(隱藏當前視窗),
DISPOSE_ON_CLOSE(隱藏當前視窗,並釋放窗體佔有的其他資源),
EXIT_ON_CLOSE(結束視窗所在的應用程式)。



2.2選單條、選單、選單項

選單項∈選單∈選單項

例:

Example9_2.java
public class Example9_2 {
   public static void main(String args[]) {
      WindowMenu win=new WindowMenu("帶選單的視窗",20,30,200,190);
   }
}

WindowMenu.java
import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class WindowMenu extends JFrame {
   JMenuBar menubar;
    JMenu menu,subMenu;
    JMenuItem  itemLiterature,itemCooking;
    public WindowMenu(){} 
    public WindowMenu(String s,int x,int y,int w,int h) {
       init(s);
       setLocation(x,y);
       setSize(w,h);
       setVisible(true);
       setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    }
    void init(String s){
       setTitle(s);             //設定視窗的標題   
       menubar=new JMenuBar(); 
       menu=new JMenu("選單"); 
       subMenu=new JMenu("體育話題");  
       itemLiterature=new JMenuItem("文學話題",new ImageIcon("a.gif"));
       itemCooking=new JMenuItem("烹飪話題",new ImageIcon("b.gif"));
       itemLiterature.setAccelerator(KeyStroke.getKeyStroke('A')); 
       itemCooking.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); 
       menu.add(itemLiterature); 
       menu.addSeparator();   //在選單之間增加分隔線
       menu.add(itemCooking); 
       menu.add(subMenu);  
       subMenu.add(new JMenuItem("足球",new ImageIcon("c.gif"))); 
       subMenu.add(new JMenuItem("籃球",new ImageIcon("d.gif")));
       menubar.add(menu); 
       setJMenuBar(menubar);
    } 
}

3.常用元件與佈局

3.1常用元件都是JComponent的子類

JTextField  文字框

建構函式:JTextField( ) ; JTextField(int columns) ;
常用方法:public String getText();
                    public void setText(String t);

JTextArea  文字區

建構函式:JTextArea() ;JTextArea(int rows, int columns) 
常用方法:public String getText();
                    public void setText(String t);

JButton  按鈕

建構函式:JButton() ; JButton(String text) ;
常用方法:public void addActionListener(ActionListener l);

JLabel  標籤

建構函式:JLabel() ; JLabel(String text) ; JLabel(Icon image) ;
常用方法:public String getText();    
                    public void setText(String t);

JCheckBox  複選框

建構函式: JCheckBox() ;JCheckBox(String text) ;
常用方法: public void addItemListener(ItemListener l) 
                     public void addActionListener(ActionListener l) 

JRadioButton  單選按鈕

建構函式: JRadioButton() ; JRadioButton(String text) ;
常用方法: public void addItemListener(ItemListener l)

JComboBox  下拉列表

建構函式:JComboBox() ; JComboBox(Object[] items) 
常用方法: public void addItemListener(ItemListener l)    
                    public Object getSelectedItem();
                    public int getSelectedIndex()

JPasswordField  密碼框

建構函式:JPasswordField() ; JPasswordField(int columns) 
常用方法:public String getText();
                   public void setText(String t);
                   public void setEchoChar(char c)使用該方法重新設定回顯字元.                       
                   public char[] getPassword()方法可以返回實際的密碼

3.2常用容器

JPanel 面板  預設佈局為FlowLayout佈局

JTabbedPane選項卡窗格

滾動窗格JScrollPane

拆分窗格JSplitPane

JLayeredPane分層窗格

3.3常用佈局

FlowLayout 居中佈局

BorderLayout 劃分東西南北中五個區域

CardLayout 撲克牌式佈局

GridLayout 網格佈局

null 空佈局

BoxLayout 盒子佈局

4.事件

事件源:產生事件的物件

監視器:監視事件源的物件。事件源通過呼叫相應的方法將某個物件註冊為自己的監視器;eg:文字框的方法:addActionListener(監視器);

處理事件的介面:監視器處理事件源的方法的實現。

4.1 ActionEvent事件

事件源:

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

註冊監視器:

addActionListener(ActionListener listen)

ActionListener介面:

方法:public void actionPerformed(ActionEvent e)

4.2 ItemEvent事件

事件源:

選擇框,下拉列表

註冊監視器:

addItemListener(ItemListener listen)

ItemListener介面:

方法:public void itemStageChanged(ItemEvent e)

4.3 DocumentEvent事件

事件源:

文字區域發生變化

註冊監視器:

addDocumentListener(DocumentListener listen)

DocumentListener介面:

方法:public void changedUpdate(DocumentEvent e)

           public void removeUpdate(DocumentEvent e)

           public void insertUpdate(DocumentEvent e)

4.4 MouseEvent事件

事件源:

滑鼠進入元件、退出元件、在元件上方單擊滑鼠、拖動滑鼠等

註冊監視器:

addMouseListener(MouseListener listen)

MouseEvent類方法:

getX()  獲取滑鼠指標在事件源座標系中的x座標;

getY()  獲取滑鼠指標在事件源座標系中的y座標;

getModifiers() 獲取滑鼠的左鍵或右鍵。滑鼠的左鍵和右鍵分別使用 InputEvent 類中的常量BUTTON1_MASK 和 BUTTON3_MASK來表示。

getClickCount() 獲取滑鼠被單擊的次數。

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

MouseListener介面方法:

①:

mousePressed(MouseEvent)負責處理在元件上按下滑鼠鍵觸發的滑鼠事件。即,當你在事件源按下滑鼠鍵時,監視器呼叫介面中的這個方法對事件作出處理。

mouseReleased(MouseEvent)負責處理在元件上釋放滑鼠鍵觸發的滑鼠事件。即,當你在事件源釋放滑鼠鍵時,監視器呼叫介面中的這個方法對事件作出處理。

mouseEntered(MouseEvent)負責處理滑鼠進入元件觸發的滑鼠事件。即,當滑鼠指標進入元件時,監視器呼叫介面中的這個方法對事件作出處理。

mouseExited(MouseEvent)負責處理滑鼠離開元件觸發的滑鼠事件。即,當滑鼠指標離開元件時,監視器呼叫介面中的這個方法對事件作出處理。

mouseClicked(MouseEvent)負責處理在元件上單擊滑鼠鍵觸發的滑鼠事件。即,當單擊滑鼠鍵時,監視器呼叫介面中的這個方法對事件作出處理。

②:

MouseMotionListener介面處理滑鼠事件:

處理:在事件源上拖動滑鼠;在事件源上移動滑鼠。

滑鼠事件的型別:MouseEvent

監視器: addMouseMotionListener(MouseMotionListener listener)

介面的方法:

mouseDragged(MouseEvent) 負責處理拖動滑鼠觸發的滑鼠事件

mouseMoved(MouseEvent) 負責處理移動滑鼠觸發的滑鼠事件

4.5 焦點事件

事件源:

元件從無輸入焦點程式設計有輸入焦點或從有輸入焦點變成無輸入焦點

註冊監視器:

addFocusListener(FocusListener listener)

FoucsListener介面:

方法:public void focusGained(FocusEvent e)

           public void focusLost(FocusEvent e)

4.6 鍵盤事件

事件源:

按下、釋放或敲擊鍵盤上一個鍵時

註冊監視器:

addKeyListener(KeyListener listener)

KeyListener介面:

方法:public void keyPressed(KeyEvent e)

           public void keyTyped(KeyEvent e)

           public void keyReleased(KeyEvent e)

5、MVC結構

模型—檢視—控制器結構。

模型:用於儲存資料的物件

檢視:為模型提供資料顯示的物件

控制器:處理使用者的互動操作

6、對話方塊

6.1 訊息對話方塊

public static void showMessageDialog ( 
Component parentComponent, //指定對話方塊可見時的位置
String messsage, //指定對話方塊上顯示的訊息,
String title, //標題
int messageType) //對話方塊的外觀

6.2輸入對話方塊

public static String showInputDialog ( 
Component parentComponent,
Object messsage, 
String title, 
int messageType) 

6.3 確認對話方塊

public static int showConfirmDialog ( 
Component parent Component, 
Obj messsage, 
String title,
int optionType) 

7、樹元件與表格元件

7.1樹元件

DefaultMutableTreeNode(Object userObject)//預設可以有子節點
DefaultMutableTreeNode(Object userObject,boolean allowChildren)

7.2表格元件

JTable()//創造預設的表格模型
JTable(int a,int b)//建立a行,b列的預設模型表格
JTable(Object data[][],Object columnName[])//建立預設表格模型物件,並顯示由data 指定的二維陣列的值,其列名由陣列columnName指定

 

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

 

程式碼除錯中的問題與解決過程

 

 

學習進度條

  程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長

目標

5000行 30篇 400小時  
第八週 80/1097 1/7 8/64 使用者介面與元件
第七週 100/1017 1/6 8/56 介面的使用
第六週 325/917 1/5 10/48 抽象與繼承
第五週

443/592

1/4 16/38 類的用法
第四周 96/149 1/3 8/22 基本語句的複習
第二週 35/53 1/2 6/14

資料型別應用

第一週 18/18 1/1 8/8

eclipse的使用