一、GUI(Graphics User Interface),图形用户界面
1.GUI介绍
1.定义:通过文字、图像、窗口小工具和计算机交互的方法
2.组成:将component装入container,安排event的响应
container 容器 | component 组件 | event |
一个可以容纳其他组件的组件 | 用户可以在屏幕上看到并也可以与之交互的对象 | 当用户利用鼠标/键盘操作,产生event(事件) |
frame:框架 | button | |
pane:被框住的平面 | ||
panel:比pane更小的平面 |
3.核心技术: awt & swing
Java.awt | javax.swing |
Frame:窗口总class | JFrame:窗口总class |
Button:按钮class | JButton:按钮class |
4.具体步骤
1) 引入相关包
//第一种,整包引入
import java.awt.*;
import javax.swing.*;
//第二种,只引入对应的frame
import java.awt.Frame;
import javax.swing.JFrame;
2) 声明frame
//第一种,常用swing,此处也以此为例
//常规建立class、method
JFeame myFrame= new JFrame();
//第二种,同样用swing
public class Test extends JFrame{
public Test(){
//code
}
public static void main(String[] args){
Test myFrame=new Test();
}
}
3)创建widget
JButton myButton=new JButton("txt");
4)把widget加到frame里的pane上
//JFrame类中自带getContentPane().add(name of widget),不需要再创建pane
//第一种
myFrame.getContentPane().add(myButton);
//第二种
public Test(){
getContentPane().add(myButton);
}
5)显示出来
//其他设置
MyFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置点击“x”后的应对方案
MyFrame.setTitle("txt");//设置窗口名称
MyFrame.setSize(250,100);//设置窗口大小
MyFrame.setVisible(true);//启动窗口
//若是第二种,且这些函数放在了constructor里,就用this.set……
6)实例
第一种
第二种
5.相关知识
1)setDefaultCloseOperation(int operation)的operation选项
2)第二种继承法被调用时,constructor一定要用子类的
Test myFrame=new Test();//OK
JFrame myFrame=new Test();//OK
JFrame myFrame=new JFrame();//NONONONONON
2.监听事件
1.本质:关注event是否被触发
2.组成:source + action =event
3.获取event步骤:从source处传到user code中对应事件的应对接口
1)实现接口
2)向button注册
3)定义事件处理方法
4)完整代码
3.Layout布局管理器
1.在 java.awt中定义的,但可以用于swing的component
2.注意:在component加到container前,必须已经创建container的layout manager
3.分类:
1) FlowLayout布局组件
像水流一样,顺序为从左至右,从上至下
Jpanel(swing中的类)的默认布局
调整screen的size,widgets的位置会随之变化
2)GridLayout布局组件
将容器分割成纵横线分隔的网格 , 每个网格所占的区域大小相同,每个网格内的组件将自动充满整个网格
添加组件时, 默认从左向右、 从上向下依次添加到每个网格中
如果指定了行数,则列数将是分量数除以行数。 如果指定了列数,则行数将是组件数除以列数
3)BorderLayout布局组件
将容器分为五个区域:North, South, East, West, and Center
二、Exception
1.抛出、抓住
1.抛出:对于有问题应抛出的情况进行判断的method
方法用throws Exception声明
抛出用throw,throw new Exception(要打印的字符串)
如果只抛出,不解决,那么本应写catch的method也要加上throws Exception
2.抓住:调用该问题代码时——尝试抓住exception,若失败就声明结果
try{code}//顺序执行code,如出现异常跳出,执行catch,常在这里进行调用
catch{code}//如果出现exception,就运行这里的code;否则,直接略过
finally{code}//不管有没有异常,都要执行这里;就算try/catch中有return指令,也要先做完finally
- 多个异常E1,E2……,那么catch要分情况讨论且在括号注明(异常名称 异常的变量名:一般是异常首字母小写+ex)
- 执行顺序问题:没有抓住,catch不执行,finally里执行,在此之后的不执行
2.自定义Exception
用户调用method,想写自己的exception class,可以创造一个class但必须extends Exception
3.实例
- 异常:不应出现在阳历上的违规日期
- Part1:exception的个性化
- Part2:出现异常的情况及异常的抛出
- Part3:只抛出不解决
- output会给出exception出现的行
- Part4:抛出并抓住
4.Stack Trace Messages
- Exception in thread “main” exception名称(如有所属package也写上,如java.lang.ArithmeticException):
- at 文件名.正在执行的函数名(文件名.java:所在行)
- at 文件名.main(文件名.java:调用函数时的行)
- 实例
5.Assert 断言
1.本质:实时跟踪有无异常并及时停止运行的警察
2.实例
没有异常,就像没有这个语句一样,不会影响任何code
出现异常,就会打印detailMessage,并停止运行
3.cmd指令:java -ea 文件名