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("平局");
}
}
相关推荐
1. **Java基础**:包括面向对象编程概念,类与对象,封装,继承和多态等。 2. **Java GUI编程**:理解JavaFX或Swing库,学习如何创建窗口,添加组件,处理事件等。 3. **图像处理**:使用Java的ImageIcon或...
在给定的“Denglu.rar_denglu_登陆_登陆界面”项目中,我们关注的是一个实现登录功能的登录界面。这个界面是通过使用Java Swing库中的JFrame组件构建的。JFrame是Java窗口应用的基础,它可以包含其他组件如按钮、...
- **继承自`Frame`**:该程序定义了一个名为`Hl`的类,继承自`Frame`,这是创建GUI窗口的一种方式。 - **设置窗口属性**: - `setSize(230, 180);`:设置窗口大小。 - `setResizable(false);`:设置窗口不可调整...
通过以上分析,我们可以看到Java Swing提供了丰富的组件和布局管理机制,使得开发GUI应用程序变得简单而高效。本项目不仅实现了基本的登录界面功能,还展示了如何使用Swing的各种组件来构建用户友好的界面。
在`DengLu`类中,`JFrame`被继承并实现了一些监听器接口,包括`ActionListener`、`KeyListener`、`ItemListener`和`FocusListener`。这些接口主要用于处理用户的操作,例如点击按钮、按下键盘按键、选择下拉框选项...
这个程序主要由`User`类构成,该类继承自`JFrame`并实现了`ActionListener`接口,这表明它能够处理用户在界面上的交互事件,如点击按钮。 在代码中,我们可以看到几个关键组件的创建,包括`JTextField`(用于输入...
异常类是Java异常处理的基础,它们构成了一个层次结构,从根类`Throwable`开始,包括`Error`和`Exception`两个主要分支。`Error`通常表示系统级错误,而`Exception`则用于应用程序可能出现的错误或异常情况。 实验...
在Java Applet中,我们通常会创建一个自定义的类,继承自`java.applet.Applet`类或`javax.swing.JApplet`类(如果使用Swing库)。这个Applet类将包含界面布局和用户交互逻辑。下面我们将详细讨论这个登录界面可能...
ATM机银行项目的Java图形界面设计是一个典型的桌面应用开发任务,主要涉及Java Swing库来创建用户交互界面。在这个项目中,我们有两个核心类:`Welcomeland` 和 `JframUserLand`,它们分别代表了欢迎界面和登录界面...
这些组件用于构建登陆界面和菜单栏,提供用户交互的功能。 3. **事件处理**:通过`ActionListener`接口,实现了对用户界面元素(如按钮)点击事件的监听。当用户点击“登陆”或“退出”时,对应的方法会被调用。 4...
031801_【第18章:图形界面】_AWT、Swing简介笔记.pdf 031802_【第18章:图形界面】_基本容器:JFrame笔记.pdf 031803_【第18章:图形界面】_标签组件:JLabel笔记.pdf 031804_【第18章:图形界面】_按钮组件:...
总结,这个“图书管理系统---java代码.doc”描述了一个基于Java Swing开发的图书管理系统的主界面部分,涵盖了GUI组件、事件处理、界面布局和界面切换等核心概念。实际系统可能还包括数据库连接和SQL操作,以实现...
此外,为了提高可维护性和扩展性,系统可能采用面向对象的设计原则,如封装、继承和多态,以及设计模式如单例模式(用于数据库连接)和工厂模式(用于创建不同类型的交易对象)。 总之,这个Java ATM项目展示了从...
1. **图形用户界面(GUI)**:Java提供了丰富的类库用于创建图形用户界面,如Swing和JavaFX。登录界面、绘图界面和记事本功能都需要用到GUI组件,如JFrame、JButton、JLabel、JTextField等,通过布局管理器如...
`JFrame` 类是窗口的基础,而`JLabel`, `JPanel`, `JTextField`, `JPasswordField`, 和 `JButton` 等组件则是构成用户界面的基本元素。例如,在代码中,`ClientLogin` 类继承自 `JFrame`,并实现了 `ActionListener`...
Java ATM登陆系统是一个基于Java编程技术的项目,用于模拟银行自动取款机(ATM)的用户登录功能。这个系统通常包含一个图形用户界面(GUI...在实际开发过程中,还需要根据具体需求和项目规模来决定采用哪些技术和工具。
2. **面向对象编程**:JAVA是一种面向对象的语言,实验中需要理解类和对象的概念,包括类的定义、对象的创建和使用,以及封装、继承和多态等面向对象特性。 3. **JAVA I/O编程**:在实现文件操作或与数据库交互时,...
在提供的代码中,可以看到`Login`类是这个系统的主要入口点,它继承自`JFrame`,`JFrame`是Java Swing中的一个组件,用于创建窗口应用程序的基础框架。`Login`类包含了一些关键组件,如文本字段(`JTextField`)和...
主程序创建并启动主界面对象,而主界面类继承自Frame,并实现了ActionListener接口,用于处理按钮点击事件。界面布局通过BoxLayout实现,创建垂直和水平的Box,将组件按照预定的布局方式进行排列。 总的来说,这个...