1.API概述
什么是API?
- 别人或公司提供的类供我们使用,这些类就是API,例如:你同桌提供给你一些类,团队老大提供给你 一些类,java提供给你一些类
学习一个API的时候,我们重点要看四个地方:
- 第一个地方:看类所在的包
因为java.lang包下的类,我们是可以直接使用的,不需要导包。 其他包下的类,我们都是要导包后才能使用的
- 第二个地方:看类的描述
- 第三个地方:看类的构造方法
- 第四个地方:看 类的成员方法
1.2 包和导包
那什么是包呢?
- 包其实就是文件夹
- 作用:对类进行分类管理
包的定义格式:
- 格式:package 包名;
- 注意:包名一般是公司域名反写,并且多级包用.分开
- 举例:www.itheima.com
- 范例:package com.itheima;
导包的格式:
- 格式:import 包名;
- 范例:import com.itheima.Student;
2:Scanner
2.1 Scanner基本使用
Scanner:
- 一个简单的文本扫描程序,可以获取基本类型数据和字符串数据
构造方法:
- Scanner(InputStream source):创建 Scanner 对象
- System.in:对应的是InputStream类型,可以表示键盘输入
Scanner sc = new Scanner(System.in);
成员方法:
- int nextInt():获取一个int类型的数据
- int i = sc.nextInt();
// 例
int number = sc.nextInt();
String str = sc.next();
double count = sc.nextDouble();
3:Random
3.1 Random基本使用
Random:
- 该类的实例用于生成随机数
构造方法:
- Random(): 创建一个新的随机数生成器
成员方法:
- int nextInt(int bound):获取一个int类型的随机数,参数bound表示获取到的随机数在[0,bound)之间
4:GUI(图形用户接口)
4.1 GUI概述
- java.awt 包:
awt是这三个单词首字母的缩写,翻译过来是抽象窗口工具包,只不过这个包的API,需要调用本地系 统方法实现功能,和本地系统有关联,不利于代码移植,属重量级控件
- javax.swing 包:
它是在awt的基础上,建立的一套图形界面系统,提供了更多的组件,而且完全由Java实现。增强了移 植性,属轻量级控件
做开发使用的是swing包下的类
组件:
- 基本组件:具有图形表示的对象
- 容器组件:是可以添加组件的组件。也就是在容器中可以通过add方法添加组件,既可以添加基本组件,也可 以添加容器组件。
看常用的基本组件:
- JButton,这是按钮
- JLabel,这是用来显示文本内容的,或者展示图片使用
- JTextFile,这是文本框,用来输入内容的
- JTextArea,这是文本域,用来输入多行多列的数据的
- JPanel 面板,创建面板的时候也要定义绝对定位, 调用setLayout(null); 方法
4.2 常用组件
4.2.1 JFrame(初识窗体)
JFrame:
- 是一个顶层窗口
构造方法:
- JFrame():构造一个最初不可见的新窗体, 要用setVisible(true) 方法显示出来
成员方法:
- void setVisible(boolean b):显示或隐藏此窗体具体取决于参数b的值
- void setSize(int width, int height):调整此组件的大小,使其宽度为width,高度为height,单位是像素
4.2.2 JFrame(常用设置)
void setTitle(String title):设置窗体标题
void setSize(int width, int height); 设置窗口大小
void setLocationRelativeTo(Component c):设置位置,值为null,则窗体位于屏幕中央
void setDefaultCloseOperation(int operation):设置窗体关闭时默认操作
整数3表示:窗口关闭时退出应用程序
void setAlwaysOnTop(boolean alwaysOnTop):设置此窗口是否应始终位于其他窗口之上 true/ falsee
void setLayout(LayoutManager manager); 若为null值,是绝对定位
布局指的就是组件如何在窗体上进行排列摆放 设为null表示采用绝对定位
(以窗体左上角为坐标原点)
void setVisible(true); 设置窗口可见
补充:
jf.getContentPane().setBackground(Color.blue); 设置窗体背景色
4.2.3 JButton(窗口中添加按钮)
JButton:
按钮的实现
构造方法:
JButton(String text):创建一个带文本的按钮
成员方法:
void setSize(int width, int height):设置大小
void setLocation(int x, int y):设置位置(x坐标,y坐标)
一般用 setBounds(int x, int y, int width, int height);一次性赋值
补充其他方法:
setBackground setForeground
背景 和 前景(字体颜色)
setEnabled(false); 参数为false时,改按钮不可点击,为true时可以点击
4.2.4 JLabel(显示文本和图像)
JLable:
短文本字符串或图像的显示区域
构造方法:
JLabel(String text):使用指定的文本创建 JLabel实例
JLabel(Icon image):使用指定的图像创建 JLabel实例
ImageIcon(String filename):从指定的文件创建ImageIcon
文件路径:绝对路径和相对路径
绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件
例如:D:\IdeaProjects\javase_code\itheima-api-gui\images\mn.png
相对路径:必须使用取自其他路径名的信息进行解释
例如:itheima-api-gui\images\mn.png
用相对定位好
成员方法:
void setBounds(int x, int y, int width, int height):设置位置和大小
4.2.5 JTextArea
和其他一样,有setBounds();方法
补充:
对象名.append();该方法可以连续加入字符串,不会删除之前加入的字符串
4.2.6JOptionPane类(弹窗)
该类可以直接调用showMessageDialog(JFrame jf, String str);静态方法,第一个参数是jf窗口,第二个对象是弹窗显示的文本
例: JOptionPane.showMessageDialog( jf, "输入错误!") ;
4.2.7 JPanel(面板)
JPanel panel = new JPanel();
//移除面板上的所有组件
panel.removeAll();
//重新绘制组件,相当于刷新功能
panel.repaint();
4.3 案例5(考勤查询之日历控件)
需要有个日历控件类(DateChooser.java)
创建日历对象
DateChooser dateChooser1 = DateChooser.getInstance("yyyy/MM/dd");
和文本绑定
dateChooser1.reqiser(startDateField) 参数为文本框对象
4.4 事件监听机制
事件监听机制的组成:
- 事件源:事件发生的地方。可以是按钮,窗体,图片等
- 事件:发生了什么事情。例如:鼠标点击事件,键盘按下事件等
- 事件绑定:把事件绑定到事件源上,当发生了某个事件,则触发对应的处理逻辑
事件源对象. addXXXListener(事件);
代码:
button对象.addActionListener(new ActionListener) 敲这个直接出来
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
5.System
特点: 所有的方法都是静态的, jdk也不希望我们创建对象, 因为直接可以拿类名调用,不需要创建, 构造函数给私有化了!!!!!
功能:
- static void exit(int status);
- 0 正常终止
- 1 异常终止
- static long currentTimeMillis()
- 获取当前时间的毫秒值
- 作用: 测试程序运行的时间用的
- static void arraycopy(Object 原数组, int 开始索引, Object 目标数组, int 目标开始的索引, int 拷贝个数)
6.Math
特点:所有的方法都是静态的, jdk也不希望我们创建对象, 因为直接可以拿类名调用,不需要创建, 构造函数给私有化了!!!!!
功能:
- static int ceil(double number) 向上取整
- static int floor(double number) 向下取整
- static double abs(double number) 求一个数绝对值
- static double pow(double num1, double num2); 求num1的num2次幂!!!!!!
7.Object
外类的祖宗, 一个类如果没有显示继承任何类, 默认继承Object
结论:Object的功能所有类都可以用!!!!
功能
- String toString()
- 默认返回的是带@符号的地址值
- 使用场景
- 重写这个方法, 不要打印地址, 打印对象中的属性内容!!!!
- alt + insert ---> toString
- boolean equals(Object obj)
- 默认Object中实现的方式还是用 ==判断, 比较依然是地址
- 使用场景
- 重写这个方法, 不让其比较地址, 比较内容
- alt + insert ----> equals&hashcode
8.BigDecimal
构造
- BigDecimal(String val) 传入字符串类型的小数是精准的!!!!!!
- BigDecimal(double val) 因为的double类型在底层无限接近的值, 不是精准值!!!!!!
注意
- BigDecimal是一个引用数据类型, 不是基本类型, 所以无法直接使用+,-,*,/这些运算符号,只能通过方法来操作, 而方法底层, 就是取出底层维护的数字在进行+,-,*,/
功能
- BigDecimal add(BigDecimal augend)
- 一个BigDecimal和另外一个BigDecimal的对象进行相加, 返回新的BigDecimal,老的不变!!!!
- BigDecimal subtract(BigDecimal subtrahend)
- 一个BigDecimal和另外一个BigDecimal的对象进行相减, 返回新的BigDecimal,老的不变!!!!
- BigDecimal multiply(BigDecimal multiplicand)
- 一个BigDecimal和另外一个BigDecimal的对象进行相乘, 返回新的BigDecimal,老的不变!!!!
- BigDecimal divide(BigDecimal divisor)
- 一个BigDecimal和另外一个BigDecimal的对象进行相除, 返回新的BigDecimal,老的不变!!!!
- 必须能够被除尽才能使用该方法!!!!!
- BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
- divisor 是除数
- scale 保留的位数
- roundingMode
- 舍弃的规则
- BigDecimal.ROUND_HALF_UP 四舍五入
- BigDecimal.ROUND_FLOOR 向下
- BigDecimal.ROUND_CEILING 向上
- 舍弃的规则
- BigDecimal setScale(int newScale, int roundingMode)
- 设置保留的位数, 舍入方式
- BigDecimal.ROUND_HALF_UP 四舍五入
- BigDecimal.ROUND_FLOOR 向下
- BigDecimal.ROUND_CEILING 向上
- 设置保留的位数, 舍入方式
使用场景:一般在金融方面的开发才会使用到, 其他地方很少接触!!!!!!!
作用:让小数的变得精确