构造器步骤,窗体,swing中的事件机制实现的总结

构造器方法,窗体,swing中的事件机制实现的总结
构造器方法,窗体,swing中的事件机制实现


1.说明构造器方法和一般方法的区别,何谓方法重载。

   当我们创建某个类的对象时,一般的格式是: 类名 变量名=new 类名();
   如 Student st1 =new  Student();
   这里的Student() 就叫做构造器方法。
  
   与一般方法的区别:
   构造器严格的说不算是”方法“,只是因为它也可以传入参数,构造器方法没有任何返回值的定义,
   且必须与类名字相同。构造器方法只有在创建对象的时候调用——对于一个对象而言,他的构造器只能
   调用一次。构造器也可以重载,就像方法一样,定义可以传入不同方法的构造器,这也是构造器方法
   的主要用途:在创建对象时,初始化某些属性值。
     要注意的是,每个类都会有一个默认的无参构造器,但如果重新写了一个有参数的构造器,则默认的
     无参构造器不能够调用,除非在类定义中显示声明。
  
  
    每一个类都有一个默认的无参构造器,即通过new 类名()调用而创建对象。
    我们也可以给自己的类重新定义构造器方法,这叫做构造器方法的重载。
    public class Student{
    //无参构造器方法
    public Student(){}
    //一参,初始化name属性值
    public Student(String name){
    this.name=name;
    }
    //两参,初始化name,km属性值
    public Student(String name,String km)(
    this.name=name;
    this.km=km;
    )
    public String name="未知姓名";
    private String km="未知科目";
    }
    方法的重载
        在一个类中,可以定义多个同名,但参数类型和数量方法不同的方法,叫做方法的重载。
    例如:在Student类中,可以定义方法,代码如下。
   
    public void study (int hour,String k){
    km=k;
    scro+=hour/3;
    if(scro>5){
           toSleep(hour/3);   
   
       } 
    }
    public void study(int hour){
  System.out.println("不知道在学什么");
       }
      
       public void study(){
      
       System.out.println("什么都不学");
       }
         }
   
    2.如何写一个简单的登陆界面
   第一步:
    public class JFrameTest {

public static void main(String [] args){

JFrameTest tf=new JFrameTest();
tf.showFrame();
}

//显示一个窗体界面的方法
public void showFrame(){
//构造一个窗体对象
javax.swing.JFrame frame=new javax.swing.JFrame();

//设置标题
frame.setTitle("第一个界面程序");
//设置窗体大小
frame.setSi(200,200);
//让窗体显示出来买这句话要放到最后面
}
  这时候如果点击“X”窗体不会退出,
  所以要在程序中加上一句:
  frame1.setDefaultCloseOperation(3);
  此程序才会关闭
 
第二步;加组件
  public class JFrameTest {

public static void main(String [] args){

JFrameTest tf=new JFrameTest();
tf.showFrame();
}

//显示一个窗体界面的方法
public void showFrame(){
//构造一个窗体对象
javax.swing.JFrame frame=new javax.swing.JFrame();

//设置标题
frame.setTitle("第一个界面程序");

//让窗体显示出来买这句话要放到最后面

frame.setDefaultCloseOperation(3);

//创建一个一定长度的文本
Java.swing.JLabel label = new Java.swing.JLabel("账号:");
}
//创建按钮
Java.swing.JButton button=new Java.swing.JButton("登陆");
 
frame.setSi(200,200);
frame.setVisible(true);
   重新运行程序,登陆按钮占据了整个窗体界面,别的组件都看不见了,这是因为我们没有告诉frame
   对象,如何摆放在它上面的元素组件。
   代码示例   public class JFrameTest {

public static void main(String [] args){

JFrameTest tf=new JFrameTest();
tf.showFrame();
}

//显示一个窗体界面的方法
public void showFrame(){
//构造一个窗体对象
javax.swing.JFrame frame=new javax.swing.JFrame();

//设置标题
frame.setTitle("第一个界面程序");
//在放置元素组件之前,要创建并给窗体加上布局管理器:
//创建流式布局管理器
java.awt.FlowLayout f1 =new java.awt.FlowLayout();
this.setLayout(f1);
//让窗体显示出来买这句话要放到最后面

frame.setDefaultCloseOperation(3);

//创建一个一定长度的文本
Java.swing.JLabel label = new Java.swing.JLabel("账号:");
}
//创建按钮
Java.swing.JButton button=new Java.swing.JButton("登陆");
 
frame.setSi(200,200);
frame.setVisible(true);
   }
   这样一个有组件的窗体就OK了。
  
   下面总结一下:
   设置组件对象属性的方法:set<要设置的组件的属性值(设置的值的类型)。
   取得组件的属性值类型  get <要设置的组件的属性值>().
   取得组件boolean型属性值的方法:  boolean is <组件的属性值》()
   在组件上加上一个组件的方法: void add<要加的组件类型>(类型 组件名)。
  
  
   3.swing中的事件机制实现
   ①事件的概念
   事件处理是界面处理的基本功能,当用户点击鼠标或按下键盘的时候,Swing界面上获得焦点的组件
   都会收到一个事件通知,这个事件通知是Swing体系内部发出的,界面就会根据收到的通知,作出
   相应的处理,比如弹出对话框或读取用户输入。
  
  ②一个简答的事件处理流程
  个简答的事件处理流程:在一个按钮对象点击鼠标,系统即发出事件通知,这个事件通知就会被一个叫做EventObject
  (事件对象)通知给对这个事件感兴趣的处理对象EventListener(事件监听器),事件监听器中根据这个事件对象的
  数据,将读到的字符串显示在另外一个JLabel上、
 
 
 
实践过程:JButton的事件监听器是一个实现了ActionListener接口的对象:将这个对象通过调用JButton中的AddActionListener
方法传入,当按下按钮时,我们所实现接口中的actionPerformed放法就会被调用, 代码示例如下:

    public class dengluListener implements java.awt.event.ActionListener
{

private javax.swing.JTextField jt;
private javax.swing.JPasswordField mm;
public dengluListener(javax.swing.JTextField jt,javax.swing.JPasswordField mm){
this.jt=jt;
this.mm=mm;
}
//监听器中的方法通过事件触发自动调用
public void  actionPerformed(ActionEvent e){
//点登陆得到帐号和密码
//得到输入框中的数据
String name =jt.getText();
String mima=mm.getText();
System.out.println("|||"+name);
System.out.println(">>>"+mima);


}
还需要一个登陆界面类,代码如下public class denglujiemian extends javax.swing.JFrame{

public static void main(String args[]){
denglujiemian  aa =new denglujiemian();

aa.showdenglujiemian();



}
//显示登录窗体的方法
public void showdenglujiemian(){

this.setTitle("魔兽争霸");
this.setSize(300, 400);
this.setDefaultCloseOperation(3);

java.awt.FlowLayout f1 =new java.awt.FlowLayout();
this.setLayout(f1);

//加组件
javax.swing.JLabel nameLabel= new javax.swing.JLabel("帐号:");

javax.swing.JTextField nameField =new javax.swing.JTextField(20);

javax.swing.JLabel mimaLabel=new  javax.swing.JLabel("密码");

javax.swing.JPasswordField mimaField= new javax.swing.JPasswordField(20);

javax.swing.JButton loginBtn =new javax.swing.JButton("登录");


this.add(nameLabel);
this.add(nameField);
this.add(mimaLabel);
this.add(mimaField);
this.add(loginBtn);

this.setVisible(true);

dengluListener jiantingqi = new  dengluListener(nameField,mimaField);
//给按钮加上监听器对象
loginBtn.addActionListener(jiantingqi);


}
这样,在窗体中输入账号,密码以后,程序就会输出用户输入的内容。