201711671102 曾燃亮 《java程序设计》第8周学习总结
教材学习内容总结
第九章 组件及事件处理
一.Java Swing概述
java的java.awt包,即java的抽象窗口工具包提供了许多用来设计GUI的组件类。
学习GUI编程时,要掌握理解两个概念:容器类(Container)和组件类(Component)。
javax.swing包中JComponent类是java.awt包中Container类的一个直接子类,是java.awt包中Component类的一个间接子类。
1)java把Component类的子类或间接子类创建的对象为一个组件
2)java把Container的子类或间接子类创建的对象称为一个容器
3)可以向容器中添加组件。add()
4)容器调用removeAll()方法可以移掉容器中的全部组件,调用remove(Component c)方法可以移掉容器中参数c指定的组件
5)容器本身也是一个组件,所以可以把容器添加到另一个容器中实现容器的嵌套
6)每当容器添加或移掉组件时,应让容器调用validate( )方法,以保证容器能正确显示出来
二.窗口
java提供的JFrame类的实例就是一个底层容器,即窗口
Jframe类是Comtainer类的间接子类
窗口被默认为系统添加到显示屏幕上,因此不允许将一个窗口添加到另一个容器中
1.JFrame常用方法
JFrame()创建一个无标题的窗口
JFrame(String s)创建标题为s的窗口
public void setBounds(int a,int b,int width,int height)设置窗口的初始位置(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 setResizabke(boolean b)设置窗口是否可调整大小,默认可以调整
public void dispose()撤销当前窗口,并释放当前窗口所有的资源
public void setExtendedState(int state)设置窗口的扩展状态,其中state取JFrame类中的下列常量:
MAXIMIZED_HORIZ(水平方向最大化)
MAXIMIZED_VERT(垂直方向最大化)
MAXIMIZED_BOTH(水平,垂直方向最大化)
public void setDefaultCloseOperation(int opreation)该方法用来设置单击窗口右上角的关闭图标,程序根据参数operation取值做出不同处理:
DO_NOTHING_NO_CLOSE(什么也不做)
HIDE_ON_CLOSE(隐藏窗口)
DISPOSE_ON_CLOSE(隐藏当前窗口,并释放窗口占有的其他资源)
EXIT_ON_CLOSE(结束窗口所在应用程序)
2.菜单条,菜单,菜单项
菜单条
setJMenuBar(JMenuBar bar);
该方法将菜单添加到窗口的顶端,需要注意的是,只能向窗口添加一个菜单条
菜单
JComponent类的子类JMenu的实例就是一个菜单
菜单项
JComponent类的子类JMenuItem的实例就是一个菜单项
嵌入子菜单
菜单中添加菜单
菜单上的图标
Icon icon=new ImageIcon("a.gif");
三.常用组件与布局
1.常用组件
JTextField(文本框)
JTextArea(文本区)
JButton(按钮)
JLable(标签)
JCheckBox(复选框)
JRadioButton(单选按钮)
JComboBox(下拉列表)
JPasswordField(密码框)
2.常用容器
1)JPanel面板
默认布局是FlowLayout布局(居中)
2)JTabbedPane选项卡窗格
3)滚动窗格JScrollPane
4)拆分窗格JSplitPane
5)JLayeredPane分层窗格
3.常用布局
1)FLowLayout布局
2)BorderLayout布局(东南西北中布局)
3)CardLayout布局
4)GridLayout布局(网格布局)
5)null布局(空布局)
6)BoxLayout布局(盒式布局)
四. 处理事件
1.事件处理模式
1)事件源
能产生事件的对象都可以称为事件源,如文本框、按钮、下拉列表等。
2)监视器
事件源通过调用相应的方法将某个对象注册为自己的监视器。
3)处理事件的接口
2.ActionEvent事件
1)ActionEvent事件源
文本框、按钮、菜单项、密码框和单选按钮都可触发
2)注册监视器
addActionListener(ActionListener listen)
3)ActionListener接口
该接口只有一个方法public void actionPerformed(ActionEvent e)
4)ActionEvent类中的方法
3.ItemEvent事件
1)事件源
选择框,下拉列表都可以触发
2)注册监视器
addItemListener(ItemListener listen)
3)ItemListener接口
只有一个方法public void itemStateChanged(ItemEvent e)
4.DocumentEvent事件
1)事件源
文本区
2)注册监视器
addDocumentListener(DocumentListener listener)
3)DocumentListener接口
有三个方法
public void changedUpdate(DocumentEvent e)
public void removeUpdate(DocumentEvent e)
public void insertUpdate(DocumentEvent e)
5.MouseEvent事件
P244
6.焦点事件
7.键盘事件
8.窗口事件
9.匿名类实例或窗口做监视器
1)匿名类实例做监视器
2)窗口做监视器
10.事件总结
1)授权模式
即事件源调用方法将某个对象注册为自己的监视器
2)接口回调
就像上转型对象
3)方法绑定
4)保持松耦合
五.使用MVC结构
模型-视图-控制器(MVC)
模型 用于存储数据的对象
视图 为模型提供数据显示对象
控制器 处理用户的交互操作
六.对话框
对话框分为无模式和有模式两种
有模式:当这个对话框激活时,只能让程序响应对话框内部的事件,而且将阻塞其他线程的执行,用户不能再激活对话框所在程序的其他窗口,直到对话框结束。
无模式的对话框处于激活时,也可以激活其他窗口,也不阻塞其他线程的执行
1.消息对话框
消息对话框是有模式的对话框
就是弹出一个警告的对话框
2.输入对话框
JOptionPane类的静态方法
showInputDialog()
3.确认对话框
JOptionPane类的静态方法
showConfirDialog()
4.颜色对话框
JColorChooser类的静态方法
showDialog()
5.自定义对话框
就是自定义
七.树组件与表格组件
1.数组件
1)DefaultMutableTreeNode结点
DefaultMutableTreeNode类是实现了MutableTreeNode接口的类
DefaultMutableTreeNode类两个常用的构造方法:
DefaultMutableTreeNode( Object userObject)
DefaultMutableTreeNode(Object userObject,boolean allowChildren)
第一个方法创建的有默认的子节点,即可以使用add()添加其他结点作为它的子节点
2)树上的TreeSelectionEvent事件
2.表格组件
八.按钮绑定到键盘
九.打印组件
十.发布GUI程序
1.首先用文本编辑器编写一个清单文件
2.生成JAR
十一.应用举例
华容道
教材学习中的问题和解决过程
loading。。。。。
代码调试中的问题和解决过程
loading。。。。。
感悟
组件与事件是一个难题!慢慢消化
目标:5000行
第一周:35行
第二周:70行
第三、四周:200行
第五周:640行
第六周:150行
第七周:200行
第八周:300行