`
约巴拿
  • 浏览: 19646 次
  • 性别: 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("平局");

 }

}

分享到:
评论

相关推荐

    带有登陆界面的Java华容道游戏

    1. **Java基础**:包括面向对象编程概念,类与对象,封装,继承和多态等。 2. **Java GUI编程**:理解JavaFX或Swing库,学习如何创建窗口,添加组件,处理事件等。 3. **图像处理**:使用Java的ImageIcon或...

    Denglu.rar_denglu_登陆_登陆界面

    在给定的“Denglu.rar_denglu_登陆_登陆界面”项目中,我们关注的是一个实现登录功能的登录界面。这个界面是通过使用Java Swing库中的JFrame组件构建的。JFrame是Java窗口应用的基础,它可以包含其他组件如按钮、...

    java游戏登陆界面

    - **继承自`Frame`**:该程序定义了一个名为`Hl`的类,继承自`Frame`,这是创建GUI窗口的一种方式。 - **设置窗口属性**: - `setSize(230, 180);`:设置窗口大小。 - `setResizable(false);`:设置窗口不可调整...

    JAVA设计qq的登陆界面

    通过以上分析,我们可以看到Java Swing提供了丰富的组件和布局管理机制,使得开发GUI应用程序变得简单而高效。本项目不仅实现了基本的登录界面功能,还展示了如何使用Swing的各种组件来构建用户友好的界面。

    防登陆注册界面

    在`DengLu`类中,`JFrame`被继承并实现了一些监听器接口,包括`ActionListener`、`KeyListener`、`ItemListener`和`FocusListener`。这些接口主要用于处理用户的操作,例如点击按钮、按下键盘按键、选择下拉框选项...

    银行管理系统登陆界面java代码.doc

    这个程序主要由`User`类构成,该类继承自`JFrame`并实现了`ActionListener`接口,这表明它能够处理用户在界面上的交互事件,如点击按钮。 在代码中,我们可以看到几个关键组件的创建,包括`JTextField`(用于输入...

    Java实验报告——用户登录系统

    异常类是Java异常处理的基础,它们构成了一个层次结构,从根类`Throwable`开始,包括`Error`和`Exception`两个主要分支。`Error`通常表示系统级错误,而`Exception`则用于应用程序可能出现的错误或异常情况。 实验...

    简单java Applet做的登录界面

    在Java Applet中,我们通常会创建一个自定义的类,继承自`java.applet.Applet`类或`javax.swing.JApplet`类(如果使用Swing库)。这个Applet类将包含界面布局和用户交互逻辑。下面我们将详细讨论这个登录界面可能...

    ATM机银行项目java图形界面.doc

    ATM机银行项目的Java图形界面设计是一个典型的桌面应用开发任务,主要涉及Java Swing库来创建用户交互界面。在这个项目中,我们有两个核心类:`Welcomeland` 和 `JframUserLand`,它们分别代表了欢迎界面和登录界面...

    java课设[收集].pdf

    这些组件用于构建登陆界面和菜单栏,提供用户交互的功能。 3. **事件处理**:通过`ActionListener`接口,实现了对用户界面元素(如按钮)点击事件的监听。当用户点击“登陆”或“退出”时,对应的方法会被调用。 4...

    Java开发详解.zip

    031801_【第18章:图形界面】_AWT、Swing简介笔记.pdf 031802_【第18章:图形界面】_基本容器:JFrame笔记.pdf 031803_【第18章:图形界面】_标签组件:JLabel笔记.pdf 031804_【第18章:图形界面】_按钮组件:...

    图书管理系统---java代码.doc

    总结,这个“图书管理系统---java代码.doc”描述了一个基于Java Swing开发的图书管理系统的主界面部分,涵盖了GUI组件、事件处理、界面布局和界面切换等核心概念。实际系统可能还包括数据库连接和SQL操作,以实现...

    java自动取款机开发源代码

    此外,为了提高可维护性和扩展性,系统可能采用面向对象的设计原则,如封装、继承和多态,以及设计模式如单例模式(用于数据库连接)和工厂模式(用于创建不同类型的交易对象)。 总之,这个Java ATM项目展示了从...

    Java实现登陆绘图记事本水中倒影

    1. **图形用户界面(GUI)**:Java提供了丰富的类库用于创建图形用户界面,如Swing和JavaFX。登录界面、绘图界面和记事本功能都需要用到GUI组件,如JFrame、JButton、JLabel、JTextField等,通过布局管理器如...

    Java设计聊天室

    `JFrame` 类是窗口的基础,而`JLabel`, `JPanel`, `JTextField`, `JPasswordField`, 和 `JButton` 等组件则是构成用户界面的基本元素。例如,在代码中,`ClientLogin` 类继承自 `JFrame`,并实现了 `ActionListener`...

    java ATM登陆

    Java ATM登陆系统是一个基于Java编程技术的项目,用于模拟银行自动取款机(ATM)的用户登录功能。这个系统通常包含一个图形用户界面(GUI...在实际开发过程中,还需要根据具体需求和项目规模来决定采用哪些技术和工具。

    JAVA学生信息管理系统实验报告.doc

    2. **面向对象编程**:JAVA是一种面向对象的语言,实验中需要理解类和对象的概念,包括类的定义、对象的创建和使用,以及封装、继承和多态等面向对象特性。 3. **JAVA I/O编程**:在实现文件操作或与数据库交互时,...

    Java编写的简单图书管理系统.docx

    在提供的代码中,可以看到`Login`类是这个系统的主要入口点,它继承自`JFrame`,`JFrame`是Java Swing中的一个组件,用于创建窗口应用程序的基础框架。`Login`类包含了一些关键组件,如文本字段(`JTextField`)和...

    基于JAVA的学生成绩标准管理系统源代码.doc

    主程序创建并启动主界面对象,而主界面类继承自Frame,并实现了ActionListener接口,用于处理按钮点击事件。界面布局通过BoxLayout实现,创建垂直和水平的Box,将组件按照预定的布局方式进行排列。 总的来说,这个...

Global site tag (gtag.js) - Google Analytics