`
约巴拿
  • 浏览: 18937 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

swing登陆界面的开发和类的继承总结

阅读更多

                                                    swing登陆界面开发
      
      一、swing是什么?作用呢?
        Swing是一个用于开发Java应用程序用户界面的开发工具包。我们利用Swing丰富、灵活的功能和模块化组件,使得我们用很少的代码就可以创建优雅的用户界面。 工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event

     

    二、swing登陆界面开发步骤:
     1.构造一个顶层容器JFrame的窗体对象
     2、设置该窗体的一些属性,如大小、标题
     3、设置该窗体的布局方式
     4、添加组件到窗体上
     5、最后才能写上让窗体显示出来的代码 

 

 

                                                         类的继承

      一、子类继承的作用: 提高代码的重用性,减少劳动量

     

      二、子类的继承格式:
            public class 子类名 extends 父类名
      extends是关键字,表示继承
      java中的继承是单继承,子类只能继承一个父类
     
      三、子类能从父类中继承到所有的属性和方法

     

      四、子类也可以重写父类中的方法和定义自己特有的方法和属性,这也是子类之所以存在的原因。
      特别注意的是,如果父类中已经定义了构造方法,而不是默认的无参构造器,此时创建子类时也要定义构造器方法,否则会报错。
      子类调用重写的方法时,会优先调用子类定义的方法。如果想调用父类的方法,可以使用super.方法名();

    

        五、java中的自动转型时是为了扩大对象的使用范围

    

        六、多态的产生是由方法的重载和重写,类的继承引起的

 
  swing登陆界面开发练习:
 1.QQ登录界面
 2.计算器界面

  类的继承练习:
1.回合制游戏:奥特曼和小怪兽要战斗,直到一方的血量为0的时候结束战斗,输出谁胜利了!
  奥特曼除了可以打小怪兽外,还可以攻击其他的奥特曼对象。
  小怪兽除了可以打奥特曼外,还可以攻击其他的小怪兽对象。
  
  1.找出这个场景中的对象
  2.找出每一个对象的特征和行为
  3.根据类的格式和对象的特性与行为定义一个class
  4.定义主函数的类,实例化对象和调用方法

QQ登陆界面代码:
package lesson5;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;


//建立一个QQFrame类
public class QQLogin {
     // 程序入口
  public static void main(String[] args) {

   QQLogin qq = new QQLogin();
   qq.showLogin();
        }
  
  // 显示一个加有多个组件的窗体界面
  public void showLogin() {
   // 构造一个窗体对象
   javax.swing.JFrame login = new javax.swing.JFrame();
   //设置背景图片
   addBackgroundImage(login);
   // 设置标题
   login.setTitle("QQ 2013");
   // 创建流式布局管理器对象
   java.awt.FlowLayout fl = new java.awt.FlowLayout();
   login.setLayout(fl);
   //创建面板对象并设置大小
   javax.swing.JPanel jpanel1=new javax.swing.JPanel();
   jpanel1.setPreferredSize(new Dimension(400,120));
   javax.swing.JPanel jpanel2=new javax.swing.JPanel();
   jpanel2.setPreferredSize(new Dimension(250,150));
   javax.swing.JPanel jpanel3=new javax.swing.JPanel();
   jpanel3.setPreferredSize(new Dimension(100,150));
   javax.swing.JPanel jpanel4=new javax.swing.JPanel();
   jpanel4.setPreferredSize(new Dimension(200,70));
   javax.swing.JPanel jpanel5=new javax.swing.JPanel();
   jpanel5.setPreferredSize(new Dimension(150,70));
   //设置面板布局
   jpanel2.setLayout(new FlowLayout(FlowLayout.LEFT));
   //创建一个标签元素
   javax.swing.JLabel jla_title = new javax.swing.JLabel("QQ 2013");
   jla_title.setFont(new Font("正楷",Font.BOLD,56));
   //将组件添加到面板1
   jpanel1.add(jla_title);
   // 创建2个标签元素:
   javax.swing.JLabel jla_ID = new javax.swing.JLabel("注册账号");
   javax.swing.JLabel jla_password = new javax.swing.JLabel("找回密码");
 
   //创建一个下拉框
   javax.swing.JComboBox jco=new javax.swing.JComboBox();
   jco.setEditable(true);//设置下拉框可以编辑
   jco.addItem("997188229");// 给下拉框添加数据
   jco.setPreferredSize(new Dimension(180, 25));//设置下拉框大小
   //创建一个密码框
   JPasswordField jpa=new JPasswordField();
   jpa.setPreferredSize(new Dimension(180,25));//设置密码框大小
   // 实例化复选框的对象
   JCheckBox jch1 = new JCheckBox("记住密码");
   JCheckBox jch2 = new JCheckBox("自动登录");
   //将组件元素添加到面板2
   jpanel2.add(jco);
   jpanel2.add(jla_ID);
   jpanel2.add(jpa);
   jpanel2.add(jla_password);
   jpanel2.add(jch1);
   jpanel2.add(jch2);
   //创建图片
   javax.swing.ImageIcon ima=new javax.swing.ImageIcon();
   javax.swing.JLabel jla_ima = new javax.swing.JLabel(ima);
   jpanel3.add(jla_ima);
   // 实例化一个ImageIcon的图标对象
   ImageIcon image = new ImageIcon("src/image/girl.jpg");
   // 实例化一个标签对象
   JLabel jlaImage = new JLabel(image);
   // 将标签对象添加到面板上
   jpanel3.add(jlaImage);
   // 创建三个按钮
   javax.swing.JButton jbu_login = new javax.swing.JButton("登陆");
   javax.swing.JButton jbu_muchID= new javax.swing.JButton("多账号");
   javax.swing.JButton jbu_set= new javax.swing.JButton("设置");
   jpanel4.add(jbu_muchID);
   jpanel4.add(jbu_set);
   jpanel5.add(jbu_login);
   // 将面板组件加到窗体上
   login.add(jpanel1);
   login.add(jpanel3);
   login.add(jpanel2);
   login.add(jpanel4);
   login.add(jpanel5);
   login.setSize(400, 400);// 设置窗体大小
   //面板设置为透明
   jpanel1.setOpaque(false);
   jpanel2.setOpaque(false);
   jpanel3.setOpaque(false);
   jpanel4.setOpaque(false);
   jpanel5.setOpaque(false);
   
   login.setDefaultCloseOperation(3);// 窗体关闭时程序退出
   login.setResizable(false);//设置窗体为不可以调整大小
   login.setVisible(true);// 让窗体显示出来,这句要放在最后面
     
  }
  /**
   * 给窗体添加背景图标
   *
   * @param login窗体的对象
   */
  public void addBackgroundImage(JFrame login) {
   // 实例化一个ImageIcon的图标对象
   ImageIcon image = new ImageIcon("src/image/bluesky.jpg");
   // 实例化一个标签对象
   JLabel background = new JLabel(image);
   // 设置标签显示的位置和标签的大小
   background.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());
   //将标签添加到窗体的第二层面板上
   login.getLayeredPane().add(background,new Integer(Integer.MIN_VALUE));
   //获取窗体的第一层面板对象
   JPanel contentPanel = (JPanel)login.getContentPane();
   //设置第一层面板为透明
   contentPanel.setOpaque(false);
  }
  
}

 

 

<!--EndFragment--><!--EndFragment-->

 

计算器代码:

     package lesson5;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

//建立一个Counter类
public class Counter {

 /**
  * 程序运行的入口点
  */
 public static void main(String[] args) {
  //实例化一个Class类的对象
  Counter cou=new Counter();
  //对象调用显示窗体的方法
  cou.showFrame();

 }
 public void showFrame(){
  //实例化一个窗体对象并且设置标题
  JFrame jf=new JFrame("简单计算器");
  //设置窗体的大小属性
  jf.setSize(200,330);
  //设置窗体的显示位置
  jf.setLocation(200,100);
  //设置窗体关闭时退出程序
  jf.setDefaultCloseOperation(2);
  //设置窗体布局方式
  jf.setLayout(new FlowLayout());
  //添加组件到jf窗体上
  jf.add(jp1());
  jf.add(jp2());
  jf.add(jp3());
  jf.add(jp4());
  //设置禁止调整窗体的大小
  jf.setResizable(false);
  //设置窗体为可见
  jf.setVisible(true);
  }
 //创建面板1的方法
  public JPanel jp1(){
   //实例化一个JPanel类的对象
   JPanel jpanel1=new JPanel();
   //设置对象面板的大小
   jpanel1.setPreferredSize(new Dimension(200,40));
   //实例化一个文本输入框对象
   JTextField jte=new JTextField(15);
   //添加组件到对象中
   jpanel1.add(jte);
   return jpanel1;
  }
 //创建面板2的方法
 public JPanel jp2(){
  //实例化一个JPanel类的对象
  JPanel jpanel2=new JPanel();
  //设置对象面板的大小
  jpanel2.setPreferredSize(new Dimension(120,50));
  return jpanel2;
 }
 //创建面板3的方法
    public JPanel jp3(){
     //实例化一个JPanel类的对象
       JPanel jpanel3=new JPanel();
       //设置对象面板的大小
       jpanel3.setPreferredSize(new Dimension(50,50));
       //实例化一个按钮标签
       JButton jb=new JButton("清除");
       //添加组件到对象中
       jpanel3.add(jb);
       return jpanel3;
    } 
  //创建面板4的方法
    public JPanel jp4(){
     //实例化一个JPanel类的对象
       JPanel jpanel4=new JPanel();
       //设置对象面板的大小
       jpanel4.setPreferredSize(new Dimension(200,200));
       //设置jpanel4的布局方式
       jpanel4.setLayout(new  GridLayout(4,4));
       //实例化16个按钮标签
       JButton jb1=new JButton("7");
       JButton jb2=new JButton("8");
       JButton jb3=new JButton("9");
       JButton jb4=new JButton("÷");
       JButton jb5=new JButton("4");
       JButton jb6=new JButton("5");
       JButton jb7=new JButton("6");
       JButton jb8=new JButton("×");
       JButton jb9=new JButton("1");
       JButton jb10=new JButton("2");
       JButton jb11=new JButton("3");
       JButton jb12=new JButton("-");
       JButton jb13=new JButton(".");
       JButton jb14=new JButton("0");
       JButton jb15=new JButton("=");
       JButton jb16=new JButton("+");
       //添加按钮标签到面板4上
       jpanel4.add(jb1);
       jpanel4.add(jb2);
       jpanel4.add(jb3);
       jpanel4.add(jb4);
       jpanel4.add(jb5);
       jpanel4.add(jb6);
       jpanel4.add(jb7);
       jpanel4.add(jb8);
       jpanel4.add(jb9);
       jpanel4.add(jb10);
       jpanel4.add(jb11);
       jpanel4.add(jb12);
       jpanel4.add(jb13);
       jpanel4.add(jb14);
       jpanel4.add(jb15);
       jpanel4.add(jb16);
       return jpanel4;
    }

}

 

游戏:

  思路分析:创建一个参与者Participant类,该类中有奥特曼和怪兽共同的属性:身份和血量;有共同的方法:要战斗。      再创建奥特曼Ultraman类和怪兽Monster类,这两个类都继承Participant类,然后分别重写父类Participant类中的战斗方法。    然后再创建一个Game类,用来创建实例化上述类的对象,写入程序运行的入口点。

   代码:

package lesson6;

//定义一个参与者类Participant
public class Participant{
//参与者身份属性
protected String ident;
//参与者血量属性
private int blood;
//带两个参数的构造器方法
public Participant(String a,int b){
  this.ident=a;
  this.blood=b;
}
 //定义一个设置参与者身份的方法
public void setIdent(String st){
  ident=st;
}
//定义一个获取参与者身份的方法
public String getIdent(){
   return ident;
}
//定义设置血量的方法
public void setBlood(int bl){
 blood = bl;
}
//获取血量的方法
public int getBlood(){
 return blood;
}
//定义一个参与者与另一个参与者的战斗方法
public void fight(Participant par){
 par.setBlood(par.getBlood() - 1);
      System.out.println(ident+"攻击了"+par.getIdent()+","+par.getIdent()+"剩余的血量是"+par.getBlood());
}

}

 

package lesson6;

public class Ultraman extends Participant{
 

 
 public Ultraman(String a, int b) {
  super(a, b);
  // TODO Auto-generated constructor stub
 }

 //定义奥特曼与奥特曼之间的战斗方法
 public void fight(Ultraman ult){
  ult.setBlood(ult.getBlood()-3);
        System.out.println(ident+"攻击了"+ult.getIdent()+" ,"+ult.getIdent()+"的剩余血量为"+ult.getBlood());  
 }

}

package lesson6;

public class Monster extends Participant{

 public Monster(String a, int b) {
  super(a, b);
  // TODO Auto-generated constructor stub
 }
 //定义怪兽和怪兽的战斗方法
    public void fight(Monster mon){
 mon.setBlood(mon.getBlood()-2);
    System.out.println(ident+"攻击了"+mon.getIdent()+" ,"+mon.getIdent()+"的剩余血量为"+mon.getBlood());
}
}

package lesson6;

public class Game {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // 创建并初始化一些对象
  Ultraman ult1=new Ultraman("奥特曼1号",15);
  Ultraman ult2=new Ultraman("奥特曼2号",10);
  Monster mon1=new Monster("怪兽1号",10);
  Monster mon2=new Monster("怪兽2号",12);
     //奥特曼1号与奥特曼2号之间的战斗
        for(int i=1;i<5;i++){
            
            //奥特曼1号调用战斗方法
            ult1.fight(ult2);
            //奥特曼2号调用战斗方法
            ult2.fight(ult1);
          }
       //输出两个奥特曼之间的战斗结果
       System.out.println("奥特曼1号与奥特曼2号之间的战斗结果:");
       
       if(ult1.getBlood()<=0)   System.out.println("胜者是"+ult2.getIdent());
       else if(ult2.getBlood()<=0)  System.out.println("胜者是"+ult1.getIdent());
           else     System.out.println("平局");
       //两个怪兽之间的战斗
       for(int i=1;i<6;i++){
           
           //怪兽1调用战斗方法
           mon1.fight(mon2);
           //怪兽2调用战斗方法
           mon2.fight( mon1);
         }
      //输出两个怪兽之间的战斗结果
      System.out.println("两个怪兽之间的战斗结果:");
      
      if( mon1.getBlood()<=0)   System.out.println("胜者是"+mon2.getIdent());
      else if(mon2.getBlood()<=0)  System.out.println("胜者是"+ mon1.getIdent());
          else     System.out.println("平局");
      //设置奥特曼1号和怪兽1号的血量
      ult1.setBlood(15);
      mon1.setBlood(10);
      //奥特曼1与怪兽1之间的战斗
      for(int i=1;i<11;i++){
          
          //奥特曼1调用战斗方法
          ult1.fight(mon1);
          //怪兽1调用战斗方法
          mon1.fight(ult1);
        }
     //输出奥特曼1与怪兽1之间的战斗结果
     System.out.println("奥特曼1与怪兽1之间的战斗结果:");
     
     if(ult1.getBlood()<=0)   System.out.println("胜者是"+mon1.getIdent());
     else if(mon1.getBlood()<=0)  System.out.println("胜者是"+ult1.getIdent());
         else     System.out.println("平局");

 }

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics