一、教材学习内容(9.组件及事件监听)
1、java.awt(Java抽象窗口工具包)提供许多用来设计GUI的组件类,java.swing提供用于桌面开发的API。
2、Component类的子类或者间接子类创建的对象被称为组件,Container的子类或间接子类创建的对象被称为容器。
特别地,
1)Container提供public方法add(),用于向该对象添加组件。
2)容器对象可以调用removeAll()方法移除容器内的所有组件,调用remove(Component c)方法可以移除特定的组件。
3)容器本身就是一个组件,可以添加到另一个组件内。
4)每当容器添加新的组件或者移除组件时,应当让容器调用validate()方法,刷新容器。
3、学习实践时,应该多查看Java提供的帮助文档。
4、JFarme的常用方法(我的表格呢?[○・`Д´・ ○])
JFrame() 创建一个无标题窗口
JFrame(string s) 创建标题为s的窗口
public void setBounds(int a,int b,int width,int height) 设置窗口的初始位置以及大小
public void setSize(int width,int height) 设置窗口的大小
public void setLocation(int x,int y) 设置窗口的初始位置,默认(0,0)
public void setVisible(boolean b) 设置窗口是否可见,默认不可见(flase)
public void setResizable(boolean b) 设置窗口是否可以调整大小,默认可以
public void dispose() 撤销当前窗口,并释放使用的资源
public void setExtendedState(int State)设置窗口的扩展状态,参数取下列常变量
MAXIMIZED_HORIZ 水平方向最大化
MAXIMIZED_VERT 垂直方向最大化
MAXIMIZED_BOTH 水平垂直方向最大化
pubic void setDefaultCloseOperation(int operation) 设置关闭窗口后程序处理,参数取常变量
DO_NATHING_ON_CLOSE 什么都不在
HIDE_ON_CLOSE 隐藏当前窗口
DISPOSE_ON_CLOSE 隐藏当前窗口,并释放其资源
EXIT_ON_CLOSE 结束窗口所在的进程
5、菜单条、菜单、菜单项
1)菜单条(JMemubar),通过setJMenuber(JMenubar bar)方法将一个菜单条放置到一个窗口中
2)菜单(JMenu)
3)菜单项(JMenuItem)
4)嵌入子菜单(JMenu)JMenu是JMenuItem的子类,因此菜单本身也是一个菜单项。
5)菜单上的图标可以通过new ImageIcon("a.gif")设置。
6、常用组件与布局
1)常用组件
JTextField(文本框) | 允许用户在文本框中输入单行文本 |
JTextArea(文本区) | 允许用户在文本区中输入多行文本 |
JButton(按钮) | 允许用户单机按钮 |
JLable(标签) | 标签为用户提供提示信息 |
JCheckBox(复选框) | 为用户提供多项选择 |
JRadioButton(单项按钮) | 为用户提供单项选择(需要将对象并入ButtonGroup组内) |
JComboBox(下拉列表) | 为用户提供单项选择(拥有下拉列表) |
JPasswordField(密码框) | 允许用户在密码框内输入单行密码,且密码框内默认回显‘*’ |
2)常用容器
JPanel面板 | 默认为flowLayout(流式)布局,最常用的容器 |
JTabbedpane选项卡窗口 | 将选定的组件层叠放入容器 |
JScrollPane滚动窗格 | 为组件设定滚动条 |
JSplitPane拆分窗格 | 分为水平、垂直拆分 |
JLayeredPane分层窗格 | 使用类常量为zuia |
3)常用布局
FlowLayout布局 | 流式布局,自左向右居中布局 |
CardLayout布局 | 卡片布局,组件按照添加顺序设置层级关系 |
BorderLayout布局 | 边界布局,使用类常量为组件(也可以是容器)设置初始位置 |
GridLayout布局 | 网式布局,(一般使用数组)定义m*n个区域,分别添加组件 |
null布局 | 空布局,直接设置位置和大小,但不能自适应窗口的大小变化 |
BoxLayout布局 | 盒式布局,有水平盒与垂直盒两种heshi |
7、事件处理的步骤
!addActionListener(ActionListener listen)方法监听的是事件源(一般是鼠标动作)。
!事件源触发ActionEvent时间后,监听器调用actionPerformed(ActionEvent e)对发生的事件作出相应的动作。
!ActionEvent类中的常用方法:
1)public Object getSourse()方法:ActionEvent事件对象调用该方法可以获取发生ActionEvent事件的事件源对象的引用,即getSourse()方法可以将事件源上转型为Object对象,并返回这个上转型对象的引用。
2)public String getActionCommand()方法:ActionEvent对象调用该方法可以获取发生ActionEvent事件时,和该事件相关的一个“命令”字符串,对于文本框,当发生ActionEvent事件时,默认的“命令”字符串是文本框中的文本。
3)public void setCommand()方法:设置触发事件封装到事件中的“命令”字符串,以改变封装到事件中的默认“命令”。
8、事件分类
9、窗口的状态变化可以通过WindowListener接口实现事件的监听,WindowAdapter适配器可以代替接口来处理事件。
10、窗口作为监视器能够让事件的处理变得更简单方便,这是因为,监视器可以方便地操作窗口中的其他成员,但是当事件的处理比较复杂时,这样做也会使得系统缺乏弹性。
11、MVC模式是一种通过3个不同部分构造一个软件或组件的理想办法,
1)模型(model)用于存储事件的对象(我认为是事件监听的具体处理)
2)视图(view)为模型提供数据显示的对象(我认为是基本组件的合集)
3)控制器(controller)处理用户的交互操作,对用户的操作作出响应(我认为是事件触发的媒介,如JButton、Key等)
12、对话框JDialog(有模式:程序响应对话框内部事件,阻塞其他线程的执行)
创建的标准方法public static void showMessageDialog(Component ParentComponent,String message,String title,int messageType)
!其中参数1指定对话框的可见时位置(组件),若为null则在屏幕中央显示。
!其中参数2指定对话框上显示的信息。
!其中参数3指定对话框的标题。
!其中参数4取值是JOptionPane中的常变量,用于控制对话框的外观。
1)消息对话框(有模式)
2)输入对话框(有模式)
3)确认对话框(有模式)
4)颜色对话框(有模式)
5)自定义对话框(使用setModel(Boolean b)定义有无模式)
13、树组件与表格组件
1)树组件:使用DefaultMutableTreeNode(Object userObject)方法定义结点,并使用add()方法添加子结点;TreeSelectionEven类中的addTreeSelectionListener(TreeSelectionListener Listener)方法获得监听器,监听鼠标动作(点击树结点),创建监听器的类必须实现TreeSelectionListener接口;树使用getLastSelectedPathComponent()方法获取选中的结点。
2)表格组件:JTable(int a,int b)创建a行、b列的默认模型表格;JTable(Object data[][],Object columnName[])方法可以获得一个列名由columnName决定、数组值由data决定的表格!;当表格需要刷新显示时,让表格调用repaint()方法。此处的repaint()方法和绘图中的同名方法不同!。
二、教材学习中的问题和解决过程
暂无
三、代码调试过程中的问题
暂无
四、学习思考和感悟
暂无