构造器方法,窗体,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);
}
这样,在窗体中输入账号,密码以后,程序就会输出用户输入的内容。
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);
}
这样,在窗体中输入账号,密码以后,程序就会输出用户输入的内容。