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的使用

猜你喜欢

转载自blog.csdn.net/zhifengdeng/article/details/84677947