登陆界面
一.构造器方法
1.我们在创建一个累的对象时,使用类名 对象名=new 类名();的格式,
这里用到的类名()就叫做类的构造方法。
2.我们并没有在类中定义这样的方法,为什么我们能够使用呢?这是因为
类默认这样的一个无参数的构造器。当然,我们可以根据需要重新定义
构造器方法,这叫做构造器方法的重载。
3.定义构造器方法的格式:
//无参数的构造器
public 类名(){
}
//有参数的构造器
public 类名(数据类型 参数名,....){
//代码
}
}
二.方法的重载
1.在一个类中,可以定义多个返回值数据类型和方法名相同,但参数类型、
参数个数或参数顺序不同的方法,叫做方法的重载。
2.当调用这些方法时,会自动调用参数相匹配的方法。
三.构造方法一普通方法的区别
1.格式:
构造方法 public 类名(参数可有可无){
//代码
}
普通方法 public 返回值数据类型 方法名(参数可有可无){
//代码
}
2.构造方法不需要返回值,而普通方法必须有返回值(当然可以为void);
构造方法是创建一个对象,它每使用一次就会创建一个对象,而普通方法
可以被对象多次使用。
四.this关键字
当参数名与属性名相同时,可以使用this关键字进行区别
如:this 属性名=参数名;
五.登录界面的开发
1.java.awt包下的一些类
BorderLayout 边框布局类
FlowLayout 流式布局类
GridLayout 网格布局类
2.javax.swing包的一些类
JFrame 窗体类
JPanel 面板类
JLabel 标签类
JTextField 文本输入框类
JPasswordField 密码输入框类
JComboBox 下拉列表框类
JCheckBox 复选框类
JButton 按钮类
下面是我刚学时学的界面,里面的很多命名等都很不规范,也有很多问题思考许久,我决定还是把它写到博客上吧。
package lesson;
public class login {
// 定义一个普通的方法
public void init() {
// 实例化一个窗口对象
javax.swing.JFrame jF = new javax.swing.JFrame("QQ登录界面");
// 设置窗口的大小
jF.setSize(430, 300);
// 设置用户点击关闭按钮是程序退出
jF.setDefaultCloseOperation(3);
// 设置用户不可以调整窗口的大小
jF.setResizable(false);
// 设置窗口的位置居中
jF.setLocationRelativeTo(null);
// 实例化一个边框布局类
java.awt.BorderLayout bk = new java.awt.BorderLayout();
// 将窗体的布局设置为边框布局
jF.setLayout(bk);
// 实例化一个面板类
javax.swing.JPanel mb1 = new javax.swing.JPanel();
// 实例化一个ImageIcon的图标对象
javax.swing.ImageIcon tb1 = new javax.swing.ImageIcon(
"images/login.jpg");
// 实例化一个标签对象,用来显示图标
javax.swing.JLabel bj1 = new javax.swing.JLabel(tb1);
// 将标签加到面板1中
mb1.add(bj1);
// 将面板1加到窗体中,并指明它的位置
jF.add(mb1, java.awt.BorderLayout.NORTH);
// 再实例化一个面板对象
javax.swing.JPanel mb2 = new javax.swing.JPanel();
// 实例化一个ImageIcon的图标对象
javax.swing.ImageIcon tb2 = new javax.swing.ImageIcon("images/tx.jpg");
// 实例化一个标签对象,用来显示图标
javax.swing.JLabel bj2 = new javax.swing.JLabel(tb2);
// 将标签加到面板2中
mb2.add(bj2);
// 将面板2加到窗体中,并指明它的位置
jF.add(mb2, java.awt.BorderLayout.WEST);
// 再实例化一个面板对象
javax.swing.JPanel mb3 = new javax.swing.JPanel();
// 实例化一个边框布局对象
java.awt.BorderLayout bk1 = new java.awt.BorderLayout();
// 将面板3设置为边框布局
mb3.setLayout(bk1);
// 实例化一个面板对象,将它加到面板3中
javax.swing.JPanel jp1 = new javax.swing.JPanel();
// 实例化一个标签对象
javax.swing.JLabel bj3 = new javax.swing.JLabel("帐号");
// 将标签加到面板jp1中
jp1.add(bj3);
// 实例化一个文本框对象
javax.swing.JTextField txt1 = new javax.swing.JTextField(16);
// 将文本框加到面板jp1中
jp1.add(txt1);
// 将它加到面板3中
mb3.add(jp1, java.awt.BorderLayout.NORTH);
// 实例化一个面板对象,将它加到面板3中
javax.swing.JPanel jp2 = new javax.swing.JPanel();
// 实例化一个标签对象
javax.swing.JLabel bj4 = new javax.swing.JLabel("密码");
// 将标签加到面板jp2中
jp2.add(bj4);
// 实例化一个密码输入框
javax.swing.JPasswordField txt2 = new javax.swing.JPasswordField(16);
// 将文本框加到面板3中
jp2.add(txt2);
// 将它加到面板mb2中
mb3.add(jp2, java.awt.BorderLayout.CENTER);
// 实例化一个面板对象,将它加到面板3中
javax.swing.JPanel jp3 = new javax.swing.JPanel();
// 定义一个数组
String[] arr = { "上线", "隐身", "离开", "忙碌" };
// 实例化一个下拉框对象
javax.swing.JComboBox xl = new javax.swing.JComboBox(arr);
// 将下拉框添加到面板jp3中
jp3.add(xl);
// 实例化一个复选框
javax.swing.JCheckBox fx1 = new javax.swing.JCheckBox("记住密码");
// 将复选框添加到面板jp3中
jp3.add(fx1);
// 实例化一个复选框
javax.swing.JCheckBox fx2 = new javax.swing.JCheckBox("自动登录");
// 将复选框添加到面板jp3中
jp3.add(fx2);
// 将它加到面板mb3中
mb3.add(jp3, java.awt.BorderLayout.SOUTH);
// 将面板加到窗体中,并指明它的位置
jF.add(mb3, java.awt.BorderLayout.CENTER);
// 再实例化一个面板对象
javax.swing.JPanel mb4 = new javax.swing.JPanel();
// 实例化一个边框布局对象
java.awt.BorderLayout bk2 = new java.awt.BorderLayout();
// 将面板4设置为边框布局
mb4.setLayout(bk2);
// 实例化一个面板对象,将它加到面板4中
javax.swing.JPanel jp4 = new javax.swing.JPanel();
// 实例化一个文本框对象
javax.swing.JLabel txt3 = new javax.swing.JLabel("注册帐号");
// 将文本框加到面板jp4中
jp4.add(txt3);
// 将它加到面板mb4中
mb4.add(jp4, java.awt.BorderLayout.NORTH);
// 实例化一个面板对象,将它加到面板4中
javax.swing.JPanel jp5 = new javax.swing.JPanel();
// 实例化一个文本框对象
javax.swing.JLabel txt4 = new javax.swing.JLabel("找回密码");
// 将文本框加到面板jp5中
jp5.add(txt4);
// 将它加到面板mb4中
mb4.add(jp5, java.awt.BorderLayout.CENTER);
// 将面板4加到窗体中,并指明它的位置
jF.add(mb4, java.awt.BorderLayout.EAST);
// 再实例化一个面板对象
javax.swing.JPanel mb5 = new javax.swing.JPanel();
// 实例化一个边框布局对象
java.awt.BorderLayout bk3 = new java.awt.BorderLayout();
// 将面板5设置为边框布局
mb5.setLayout(bk3);
// 实例化一个面板对象,将它加到面板5中
javax.swing.JPanel jp6 = new javax.swing.JPanel();
// 实例化一个按钮对象
javax.swing.JButton jb1 = new javax.swing.JButton("多账号");
// 将按扭添加到面板5中,并指明它的位置。
jp6.add(jb1);
// 实例化一个按钮对象
javax.swing.JButton jb2 = new javax.swing.JButton("设置");
// 将按扭添加到面板5中,并指明它的位置。
jp6.add(jb2);
// 将它加到面板mb5中
mb5.add(jp6, java.awt.BorderLayout.WEST);
// 实例化一个面板对象,将它加到面板5中
javax.swing.JPanel jp7 = new javax.swing.JPanel();
// 实例化一个按钮对象
javax.swing.JButton jb3 = new javax.swing.JButton("登录");
//设置事件源的动作命令值。
jb3.setActionCommand("Login");
// 将按扭添加到面板5中,并指明它的位置。
jp7.add(jb3);
// 将它加到面板mb5中
mb5.add(jp7, java.awt.BorderLayout.EAST);
// 将面板4加到窗体中,并指明它的位置
jF.add(mb5, java.awt.BorderLayout.SOUTH);
// 将窗体设为可见
jF.setVisible(true);
/*给事件源jb3添加动作监听器方法*/
//实例化一个事件处理类的对象,该类是ActionListener接口的子类
LoginListener ll = new LoginListener(txt1,txt2);
//给事件源添加动作监听器方法,绑定事件处理类的对象ll
jb3.addActionListener(ll);
}
}
监听器的代码
public class LoginListener implements ActionListener {
private JTextField txt1;//声明一个帐号输入框对象属性
private JPasswordField txt2;//声明一个密码输入框对象属性
/**
* 定义一个构造方法,带了两个参数
* @param txt1帐号输入框对象
* @param txt2密码输入框对象
*/
public LoginListener(JTextField txt1, JPasswordField txt2) {
//将参数赋值给属性
this.txt1 = txt1;
this.txt2 = txt2;
}
/**
* 动作事件发生后,会执行的方法,事件处理类的方法
*/
public void actionPerformed(ActionEvent e) {
String name = txt1.getText();//得到帐号输入框的值
String pwd = txt2.getText();//得到密码输入框中的值
System.out.println("你点击了"+e.getActionCommand()+" 帐号:"+name+" 密码:"+pwd);
//判断输入的帐号和密码是否都是admin
if(name.equals("admin") && pwd.equals("admin")){
//显示一个画图程序的界面
JFrame draw = new JFrame("画图程序");
draw.setSize(600, 500);
draw.setLocationRelativeTo(null);
draw.setDefaultCloseOperation(2);
draw.setVisible(true);
}else{
JOptionPane.showMessageDialog(null,"你输入的帐号或密码错误,请重新输入!");
}
}
}
测试代码
public class dax{
//主函数
public static void main(String [] args){
//实例化一个login对象
login lo=new login();
//调用该对象的方法
lo.init();
}
}
这是运行的界面
六.值传递和引用传递
注意:String用来定义字符串或字符数组,但它却不是基本的数据类型,它属于一个类。
1.java中的八个基本数据类型
long(长整型) int(整型) short(短整形) char(字符型) double(双精度浮点型) float(单精 度浮点型) boolean(布尔值) byte(字节)
以上八种数据类型作为参数传递时,是以传值的方式进行传递。
2.类类型(包括类、数组)
它们作为参数传递时,是以传址(地址)的方式进行传递。
七.体会
通过本次学习,基本掌握了什么是构造方法和构造方法的重载,并且能够
知道构造方法和普通方法的区别。知道this关键字是用来区分属性和参数,
当然还有其他的用途,以后会学到。最重要的是了解了登陆界面的开发,
以及掌握了一些常用的界面组件的使用方法。