1.构造函数(构造方法或者构造器)
如果要实例化对象,就必须要使用构造函数。
实例化对象的格式:
类名 对象名 = new 构造函数名(参数值,...);
构造函数的格式:
public 构造函数名(参数类型 参数名,...){
//代码体
}
注意:构造函数名必须和类名完全相同
构造函数和普通方法的区别:
1.构造函数不需要定义返回值类型,普通方法必须要定义。
public 返回值类型 方法名(参数类型 参数名,...){
//代码体
}
2.构造函数名必须和类名完全相同,普通方法可以任意定义。
3.构造函数是用来实例化对象的,普通方法不能用来实例化对象,只是执行对象的某一个行为。
4.每调用一次构造函数就会实例化一个新的对象,普通方法执行的还是对象的一个行为
java会给每一个类提供一个默认的构造函数。
如果自定义了构造函数,则默认的构造函数无法在继续使用,默认的被覆盖了。
2.方法重载
要满足的条件:
1.方法名必须完全相同。
2.方法所带的参数个数或参数类型要不同。
实现重载后,如果调用方法呢?
根据参数个数以及参数类型来决定的。
3.this关键字
当参数名和属性名相同的时候,就是用this关键字来区分,加了this的表示属性,没有加的表示参数
this关键字表示的是当前的对象,当前调用方法的对象名是哪一个,那么this就表示该对象。(相当于“我”)
4.值传递和引用传递
5.swing介绍
swing是Java的图形界面类(JAVA API类)。
swing是一采用Java语言编写的图形界面类,基于awt的基础上构建的。
java的图形界面有两部分:
1.awt
2.swing
图形界面分为三类:
1.容器类
能装在其他的组件或者容器的类
javax.swing.JFrame 窗体类
javax.swing.JPanel 面板类
2.组件类
独立的,不能添加其他的组件或者容器的类
javax.swing.JLabel 标签类
javax.swing.JTextField 文本输入框
javax.swing.JPasswordField 密码输入框
javax.swing.JButton 按钮类
javax.swing.JComboBox 下拉列表框
javax.swing.JCheckBox 多选框
3.布局类
美化组件的位置
java.awt.FlowLayout 流式布局类
Java的布局类主要位于java.awt和javax.swing包下,所有以Layout结尾的类都是的。
java有多少种布局类,分别是什么?
6.登录界面实现
搭积木的过程:
1.定义一个类
2.主函数
3.定义一个初始化界面的方法
4.在方法中创建一个JFrame对象,设置属性。
5.实例化一些组件对象,并且添加到窗体上,形成一个登录界面
6.设置窗体为可见
7.在主函数中实例化类的对象,并调用初始化界面的方法。
练习:
1.实现一个登录界面
//定义一个登录界面类
public class Login{
//主函数
public static void main(String [] args){
//实例化Login类的对象
Login login = new Login();
//调用初始化登录界面的方法
login.init();
}
//初始化界面的方法
public void init(){
//实例化一个窗体类对象
javax.swing.JFrame jf = new javax.swing.JFrame("QQ2011");
//设置窗体的大小
jf.setSize(300,400);
//设置窗体不能调整大小
jf.setResizable(true);
//设置点击关闭按钮时退出程序
jf.setDefaultCloseOperation(3);
//实例化一个布局对象
java.awt.FlowLayout fl= new java.awt.FlowLayout();
//设置窗体的流式布局
jf.setLayout(fl);
//实例化一个账号标签对象
javax.swing.JLabel lbName = new javax.swing.JLabel("账号:");
//将账号标签对象添加到窗体上
jf.add(lbName);
//实例化一个文本输入框对象
javax.swing.JTextField name = new javax.swing.JTextField(20);
//将输入框对象添加到窗体上
jf.add(name);
//实例化一个密码标签对象
javax.swing.JLabel lblPwd = new javax.swing.JLabel("密码:");
//将密码标签对象添加到窗体上
jf.add(lblPwd);
//实例化一个文本输入框对象
javax.swing.JTextField txtPwd = new javax.swing.JTextField(20);
//将输入框对象添加到窗体上
jf.add(txtPwd);
//实例化一个按钮对象
javax.swing.JButton btnLogin = new javax.swing.JButton("登录");
//添加到窗体上
jf.add(btnLogin);
//设置窗体可见
jf.setVisible(true);
}
}
2.实现一个计算器界面并实现该计算器的加法运算
LoginCounter.java
package cn.jiao1.counter;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class LoginCounter extends JFrame{
public static void main(String[] args) {
LoginCounter logincounter = new LoginCounter();
logincounter.init();
}
//初始化界面的方法
public void init() {
this.setTitle("计算器录界面");
this.setSize(290, 200);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
//设置窗体的布局为流式布局
this.setLayout(new FlowLayout());
//实例化一个图标对象
ImageIcon image = new ImageIcon("logincounter.jpg");
//实例化一个标签对象,并且将图标对象作为参数
JLabel lblImage = new JLabel(image);
lblImage.setPreferredSize(new Dimension(290,30));
//将标签对象添加到窗体上
this.add(lblImage);
// 实例化账号对象添加到窗体上
JLabel lblName = new JLabel(" 账号:");
this.add(lblName);
// 实例化账号输入框对象,并添加到窗体上
JTextField txtName = new JTextField(20);
this.add(txtName);
// 实例化密码对象添加到窗体上
JLabel lblPwd = new JLabel("密码:");
this.add(lblPwd);
// 实例化密码输入框对象,并添加到窗体上
JTextField txtPwd = new JTextField(20);
this.add(txtPwd);
//实例化一个登录按钮对象,并且添加到窗体上
JButton btnLogin = new JButton("登录");
this.add(btnLogin);
//实例化一个事件处理者对象
LoginCounterListener ll = new LoginCounterListener(txtName,txtPwd);
//登录按钮是事件源,给事件源添加一个监听动作事件的方法
btnLogin.addActionListener(ll);
this.setVisible(true);
}
}
LoginCounterListener.java
package cn.jiao1.counter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class LoginCounterListener implements ActionListener {
private JTextField txtName;
private JTextField txtPwd;
public LoginCounterListener(JTextField txtName, JTextField txtPwd) {
// 赋值
this.txtName = txtName;
this.txtPwd = txtPwd;
}
public void actionPerformed(ActionEvent e) {
// 获取账号
String name = txtName.getText();
// 获取密码
String pwd = txtPwd.getText();
// 判断是否相等
if (name.equals(pwd)) {
Counter counter = new Counter();
counter.init();
} else {
JOptionPane.showMessageDialog(null, "账号或密码错误,请重新输入!");
}
}
}
Counter.java
package cn.jiao1.counter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class LoginCounterListener implements ActionListener {
private JTextField txtName;
private JTextField txtPwd;
public LoginCounterListener(JTextField txtName, JTextField txtPwd) {
// 赋值
this.txtName = txtName;
this.txtPwd = txtPwd;
}
public void actionPerformed(ActionEvent e) {
// 获取账号
String name = txtName.getText();
// 获取密码
String pwd = txtPwd.getText();
// 判断是否相等
if (name.equals(pwd)) {
Counter counter = new Counter();
counter.init();
} else {
JOptionPane.showMessageDialog(null, "账号或密码错误,请重新输入!");
}
}
}
CounterListener.java
package cn.jiao1.counter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
public class CounterListener implements ActionListener {
private JTextField txtNumber;
private int value1,value2,count=0;
private String temp;
public CounterListener(JTextField txtNumber) {
this.txtNumber = txtNumber;
}
public void actionPerformed(ActionEvent e) {
//获取按钮上的值
if(count == 0){
value1 = Integer.parseInt(e.getActionCommand());
}else if(count == 1){
temp = e.getActionCommand();
}else if(count == 2){
value2 = Integer.parseInt(e.getActionCommand());
}
count++;
if(e.getActionCommand().equals("=")){
if(temp.equals("+")){
int value = value1+value2;
txtNumber.setText(value1+"+"+value2+"="+value);
}
count=0;
}
}
}
如果要实例化对象,就必须要使用构造函数。
实例化对象的格式:
类名 对象名 = new 构造函数名(参数值,...);
构造函数的格式:
public 构造函数名(参数类型 参数名,...){
//代码体
}
注意:构造函数名必须和类名完全相同
构造函数和普通方法的区别:
1.构造函数不需要定义返回值类型,普通方法必须要定义。
public 返回值类型 方法名(参数类型 参数名,...){
//代码体
}
2.构造函数名必须和类名完全相同,普通方法可以任意定义。
3.构造函数是用来实例化对象的,普通方法不能用来实例化对象,只是执行对象的某一个行为。
4.每调用一次构造函数就会实例化一个新的对象,普通方法执行的还是对象的一个行为
java会给每一个类提供一个默认的构造函数。
如果自定义了构造函数,则默认的构造函数无法在继续使用,默认的被覆盖了。
2.方法重载
要满足的条件:
1.方法名必须完全相同。
2.方法所带的参数个数或参数类型要不同。
实现重载后,如果调用方法呢?
根据参数个数以及参数类型来决定的。
3.this关键字
当参数名和属性名相同的时候,就是用this关键字来区分,加了this的表示属性,没有加的表示参数
this关键字表示的是当前的对象,当前调用方法的对象名是哪一个,那么this就表示该对象。(相当于“我”)
4.值传递和引用传递
5.swing介绍
swing是Java的图形界面类(JAVA API类)。
swing是一采用Java语言编写的图形界面类,基于awt的基础上构建的。
java的图形界面有两部分:
1.awt
2.swing
图形界面分为三类:
1.容器类
能装在其他的组件或者容器的类
javax.swing.JFrame 窗体类
javax.swing.JPanel 面板类
2.组件类
独立的,不能添加其他的组件或者容器的类
javax.swing.JLabel 标签类
javax.swing.JTextField 文本输入框
javax.swing.JPasswordField 密码输入框
javax.swing.JButton 按钮类
javax.swing.JComboBox 下拉列表框
javax.swing.JCheckBox 多选框
3.布局类
美化组件的位置
java.awt.FlowLayout 流式布局类
Java的布局类主要位于java.awt和javax.swing包下,所有以Layout结尾的类都是的。
java有多少种布局类,分别是什么?
6.登录界面实现
搭积木的过程:
1.定义一个类
2.主函数
3.定义一个初始化界面的方法
4.在方法中创建一个JFrame对象,设置属性。
5.实例化一些组件对象,并且添加到窗体上,形成一个登录界面
6.设置窗体为可见
7.在主函数中实例化类的对象,并调用初始化界面的方法。
练习:
1.实现一个登录界面
//定义一个登录界面类
public class Login{
//主函数
public static void main(String [] args){
//实例化Login类的对象
Login login = new Login();
//调用初始化登录界面的方法
login.init();
}
//初始化界面的方法
public void init(){
//实例化一个窗体类对象
javax.swing.JFrame jf = new javax.swing.JFrame("QQ2011");
//设置窗体的大小
jf.setSize(300,400);
//设置窗体不能调整大小
jf.setResizable(true);
//设置点击关闭按钮时退出程序
jf.setDefaultCloseOperation(3);
//实例化一个布局对象
java.awt.FlowLayout fl= new java.awt.FlowLayout();
//设置窗体的流式布局
jf.setLayout(fl);
//实例化一个账号标签对象
javax.swing.JLabel lbName = new javax.swing.JLabel("账号:");
//将账号标签对象添加到窗体上
jf.add(lbName);
//实例化一个文本输入框对象
javax.swing.JTextField name = new javax.swing.JTextField(20);
//将输入框对象添加到窗体上
jf.add(name);
//实例化一个密码标签对象
javax.swing.JLabel lblPwd = new javax.swing.JLabel("密码:");
//将密码标签对象添加到窗体上
jf.add(lblPwd);
//实例化一个文本输入框对象
javax.swing.JTextField txtPwd = new javax.swing.JTextField(20);
//将输入框对象添加到窗体上
jf.add(txtPwd);
//实例化一个按钮对象
javax.swing.JButton btnLogin = new javax.swing.JButton("登录");
//添加到窗体上
jf.add(btnLogin);
//设置窗体可见
jf.setVisible(true);
}
}
2.实现一个计算器界面并实现该计算器的加法运算
LoginCounter.java
package cn.jiao1.counter;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class LoginCounter extends JFrame{
public static void main(String[] args) {
LoginCounter logincounter = new LoginCounter();
logincounter.init();
}
//初始化界面的方法
public void init() {
this.setTitle("计算器录界面");
this.setSize(290, 200);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
//设置窗体的布局为流式布局
this.setLayout(new FlowLayout());
//实例化一个图标对象
ImageIcon image = new ImageIcon("logincounter.jpg");
//实例化一个标签对象,并且将图标对象作为参数
JLabel lblImage = new JLabel(image);
lblImage.setPreferredSize(new Dimension(290,30));
//将标签对象添加到窗体上
this.add(lblImage);
// 实例化账号对象添加到窗体上
JLabel lblName = new JLabel(" 账号:");
this.add(lblName);
// 实例化账号输入框对象,并添加到窗体上
JTextField txtName = new JTextField(20);
this.add(txtName);
// 实例化密码对象添加到窗体上
JLabel lblPwd = new JLabel("密码:");
this.add(lblPwd);
// 实例化密码输入框对象,并添加到窗体上
JTextField txtPwd = new JTextField(20);
this.add(txtPwd);
//实例化一个登录按钮对象,并且添加到窗体上
JButton btnLogin = new JButton("登录");
this.add(btnLogin);
//实例化一个事件处理者对象
LoginCounterListener ll = new LoginCounterListener(txtName,txtPwd);
//登录按钮是事件源,给事件源添加一个监听动作事件的方法
btnLogin.addActionListener(ll);
this.setVisible(true);
}
}
LoginCounterListener.java
package cn.jiao1.counter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class LoginCounterListener implements ActionListener {
private JTextField txtName;
private JTextField txtPwd;
public LoginCounterListener(JTextField txtName, JTextField txtPwd) {
// 赋值
this.txtName = txtName;
this.txtPwd = txtPwd;
}
public void actionPerformed(ActionEvent e) {
// 获取账号
String name = txtName.getText();
// 获取密码
String pwd = txtPwd.getText();
// 判断是否相等
if (name.equals(pwd)) {
Counter counter = new Counter();
counter.init();
} else {
JOptionPane.showMessageDialog(null, "账号或密码错误,请重新输入!");
}
}
}
Counter.java
package cn.jiao1.counter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class LoginCounterListener implements ActionListener {
private JTextField txtName;
private JTextField txtPwd;
public LoginCounterListener(JTextField txtName, JTextField txtPwd) {
// 赋值
this.txtName = txtName;
this.txtPwd = txtPwd;
}
public void actionPerformed(ActionEvent e) {
// 获取账号
String name = txtName.getText();
// 获取密码
String pwd = txtPwd.getText();
// 判断是否相等
if (name.equals(pwd)) {
Counter counter = new Counter();
counter.init();
} else {
JOptionPane.showMessageDialog(null, "账号或密码错误,请重新输入!");
}
}
}
CounterListener.java
package cn.jiao1.counter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
public class CounterListener implements ActionListener {
private JTextField txtNumber;
private int value1,value2,count=0;
private String temp;
public CounterListener(JTextField txtNumber) {
this.txtNumber = txtNumber;
}
public void actionPerformed(ActionEvent e) {
//获取按钮上的值
if(count == 0){
value1 = Integer.parseInt(e.getActionCommand());
}else if(count == 1){
temp = e.getActionCommand();
}else if(count == 2){
value2 = Integer.parseInt(e.getActionCommand());
}
count++;
if(e.getActionCommand().equals("=")){
if(temp.equals("+")){
int value = value1+value2;
txtNumber.setText(value1+"+"+value2+"="+value);
}
count=0;
}
}
}