首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

3.登陆界面开发

2012-10-24 
三.登陆界面开发1.构造函数(构造方法或者构造器)如果要实例化对象,就必须要使用构造函数。实例化对象的格式

三.登陆界面开发
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;
}
}

}




热点排行