JAVA语言编程基础教案23 登录窗体的实现.docx
《JAVA语言编程基础教案23 登录窗体的实现.docx》由会员分享,可在线阅读,更多相关《JAVA语言编程基础教案23 登录窗体的实现.docx(55页珍藏版)》请在冰豆网上搜索。
![JAVA语言编程基础教案23 登录窗体的实现.docx](https://file1.bdocx.com/fileroot1/2022-11/28/929088f5-fe67-4874-8940-75fdf3effd77/929088f5-fe67-4874-8940-75fdf3effd771.gif)
JAVA语言编程基础教案23登录窗体的实现
山东理工职业学院单元教学过程设计首页
课程所属院(部):
软件工程学院2019--2020学年第一学期
课程名称
Java语言编程基础
任课教师
单元标题
项目二任务3登录窗体的实现
上课地点
学时
4
授课班级
授课时间
第周
第周
第周
第周
第周
第周
星期
星期
星期
星期
星期
星期
第节
第节
第节
第节
第节
第节
月日
月日
月日
月日
月日
月日
教学目标
能力目标
知识目标
1.利用各种组件、布局模式进行登录窗体设计与实现
1.了解窗体绝对布局的方法;
2.掌握JTextField、JPasswordField、JButton、JLabel等控件的使用;
3.掌握JFrame窗体的构造方法及属性设置。
教学任务
登录窗体设计与实现
教学重、难点
重点:
掌握各种组件、布局模式
难点:
窗体的设计与实现
教学材料或用具
教材、教案、课件、课程标准、案例素材及Eclipse开发软件
课后任务
1.请利用WindowBuilder,通过控件拖放完成本任务中的登录窗体。
2.请利用JTextField、JPasswordField、JButton、JLabel等控件制作注册页面。
山东理工职业学院单元教学过程设计
步骤及时间
教学内容
教师活动
学生活动
5分钟
5分钟
20分钟
、
20分钟
20分钟
20分钟
20分钟
90分钟
90分钟
10分钟
【组织教学】
1、检查学生出勤,作好学生考勤记录。
2、课堂提问,了解学生掌握所学知识情况。
3、强调课堂纪律,加强互动,活跃课堂气氛。
【课题导入】
通常一个系统的登录需要输入用户名和密码才能实现登录。
这里用户名和密码的匹配需要连接数据库比对后,根据匹配结果显示应用程序窗体,或提示用户名密码错误等信息。
在本任务中,我们做出简化,设定用户名为“anne”,密码为“123456”时才能登录系统,否则提示错误信息。
【讲授新课】
9.4.1AWT和Swing
Java提供的两个处理图形用户界面的类库:
java.awt包和javax.swing包,GUI的类库可分为:
容器类、布局管理器类和组件类。
1.AWT简介
AWT(AbstractWindowsToolkit):
抽象窗口工具包。
在java.awt包中提供了大量地进行GUI设计所使用的类和接口:
绘制图形、设置字体和颜色、控制组件、处理事件等,AWT是Java语言进行GUI程序设计的基础。
缺点:
组件的创建和行为是由程序所在平台的本地GUI工具处理,限制了不同平台行为效果的一致性,所以被称为抽象的工具集。
2.Swing简介
javax.swing包是java.awt包的扩展包:
(1)Swing包是Java基础类库的一部分,它提供了从按钮到可分拆面板和表格的所有组件;
(2)Swing组件是Java提供的第二代GUI设计工具包,它以AWT为基础,并在此基础上新增或改进了一些GUI组件,使得GUI程序功能更强大,设计更容易、更方便;
(3)Swing的组件是“轻量级”(lightweight)组件,任一Swing组件要显示在屏幕上,都要由一个顶层容器容纳;
(4)Swing中组件的类名常以“J”开头,以与AWT相应组件区别。
Swing位于javax.swing包中,javax是java的一个扩展包。
3.AWT和swing的不同
(1)AWT是Swing的基础,Swing产生主要原因是AWT不能满足图形用户界面发展的需要;
(2)Swing组件没有本地代码,不依赖于操作系统平台的支持,这是它与AWT组件的最大区别;
(3)Swing由百分百纯Java实现,不依赖操作系统的支持,在不同的平台上的表现都是一致的,比AWT组件具有更强的可移植性和灵活性。
【例9.1】利用AWT包中的Frame类创建窗体
importjava.awt.*;
publicclassExp91{
publicstaticvoidmain(String[]args){
Framef=newFrame("AWT");
f.add(newButton("AWT窗体!
"));
f.setSize(400,400);
f.setVisible(true);
}
}
【注意】这里单击窗体按钮无法关闭窗体,需要添加窗体事件才能实现关闭窗体功能。
运行结果:
图9-13AWT窗体显示
【例9.2】利用Swing包中的JFrame类创建窗体
importjavax.swing.*;
publicclassExp92{
publicstaticvoidmain(String[]args){
JFramef=newJFrame("Swing");
f.add(newJButton("Swing窗体!
"));//将按钮添加到窗体上
f.setSize(400,400);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
【注意】这里只有设置了大小和可见性之后窗体才能正常显示出来。
运行结果:
图9-14Swing窗体显示
9.4.2JFrame
1.JFrame的常用构造方法和常用方法如下表所示:
表9-1JFrame部分构造方法
构造方法
方法含义
publicJFrame()
构造一个无参数的窗体
publicJFrame(Stringtitle)
构造一个具有指定标题的窗体
JFrame的常用方法如下表所示:
表9-2JFrame常用方法
常用方法
方法含义
setVisible(booleanv)
设置窗体是否可见
setDefaultCloseOperation
(intoperation);
通过按钮关闭窗口并结束程序。
Operation取值常为JFrame.EXIT_ON_CLOSE
setSize(intwidth,intheight)
设置窗体的宽度和高度
setLocaiton(intx,inty)
设置窗体的位置,x、y代表左上角顶点坐标。
setBounds(intx,inty,intwidth,intheight)
设置窗体的大小和位置。
setTitle(Stringtitle)
设置窗体标题
setResizable(booleanb)
设置窗体是否可变大小
pack()
调整此窗口的大小,以适合其子组件的首选大
小和布局。
remove(Component comp)
从容器中移除指定组件。
2.创建一个窗体的两种方法
(1)在程序中定义一个JFrame对象,通过对象来设置相关属性,如【例9.2】所示;
(2)自定义一个类继承JFrame对象,在该类的构造方法中设置窗体相关属性,最后实例化该类,形成窗体,如下面的例子所示,它实现了和【例9.2】同样的功能。
【例9.3】第二种创建窗体的方式
importjava.awt.Dimension;
importjavax.swing.JButton;
importjavax.swing.JFrame;
publicclassExp93extendsJFrame{
publicExp93(){
this.setTitle("Swing");
this.setSize(newDimension(400,400));//setSize的第二种使用方法
this.add(newJButton("Swing窗体!
"));
this.setVisible(true);
//EXIT_ON_CLOSE使用System.exit方法退出应用程序,仅在应用程序中使用
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
publicstaticvoidmain(String[]args){
newExp93();
}
}
9.4.3JTextField
JTextField即文本框控件,用来接收用户输入的单行数据。
JTextFiled的常用构造方法如下表所示:
表9-3JTextFiled构造方法
构造方法
方法含义
publicJTextFiled()
构造一个无参数的文本框控件
publicJTextFiled(intcolumns)
构造一个具有指定列数的文本框控件
publicJTextFiled(Stringtext)
构造一个具有初始化文本的文本框控件
publicJTextFiled(Stringtext,
intcolumns)
构造一个具有指定初始化文本和列数的文本框控件
JTextFiled的常用方法如下表所示:
表9-4JTextFiled常用方法
常用方法
方法含义
publicvoidsetText(Stringtext)
设置文本框中的内容
publicStringgetText()
返回文本框中的内容
publicvoidsetEditable(booleaneditable)
设置文本框是否可编辑
publicvoidsetEnable(booleanenable)
设置文本框是够可用
PublicvoidsetColumns(intcolumn)
设置文本框列数
9.4.4JPasswordField
JPasswordField为密码框,它扩展了JTextFiled的功能,特点是当用户输入数据后,数据不显示为正常字符,将会被特定字符(默认为“*”)隐藏。
JPasswordFieldjp=newJPasswordField();
//echochar设置为a,这样该密码框输入的信息将会被a隐藏
jp.setEchoChar(‘a’);
【例9.4】文本框和密码框示例
importjava.awt.Dimension;
importjava.awt.FlowLayout;
importjavax.swing.JFrame;
importjavax.swing.JPasswordField;
importjavax.swing.JTextField;
publicclassExp94extendsJFrame{
publicExp94(){
this.setTitle("文本框测试");
this.setSize(newDimension(400,500));
this.setLayout(newFlowLayout());//设置窗体为流式布局
JTextFieldtxt1=newJTextField();//创建文本框对象txt1
JTextFieldtxt2=newJTextField();//创建文本框对象txt2
JTextFieldtxt3=newJTextField();//创建文本框对象txt3
JPasswordFieldtxt4=newJPasswordField();//创建密码框对象txt4
txt1.setColumns(20);//设置文本框列数
txt2.setColumns(20);//设置文本框列数
txt3.setColumns(20);//设置文本框列数
txt4.setColumns(20);//设置密码框列数
txt2.setText("ok");//设置文本框txt2的显示文本
txt2.setEditable(false);//文本框txt2设置为非可编辑的
txt3.setEnabled(false);//设置txt3文本框为不可用
this.add(txt1);//将文本框txt1添加到窗体上
this.add(txt2);//将密码框txt2添加到窗体上
this.add(txt3);//将密码框txt3添加到窗体上
this.add(txt4);//将密码框txt4添加到窗体上
txt4.setEchoChar('$');//设置密码框显示字符为"$"
this.setVisible(true);
pack();
}
publicstaticvoidmain(String[]args){
newExp94();
}
}
运行结果:
图9-15文本框和密码框示例运行结果
【注意】第二个文本框为不可编辑,第三个文本框为不可用,此时文本框都不能输入信息。
9.4.5JButton
JButton即按钮控件,用来与用户进行交互,响应用户的操作。
JButton的常用构造方法如下表所示:
表9-5JButton构造方法
构造方法
方法含义
publicJButton()
构造一个无参数的按钮
publicJButton(Stringtext)
构造一个带文本的按钮
publicJButton(Iconicon)
构造一个带图标的按钮
publicJButton(Stringtext,Iconicon)
构造一个具有图像和文本的按钮
JButton的常用方法如下表所示:
表9-6JButton常用方法
常用方法
方法含义
publicvoidsetText(Stringtext)
设置按钮文本
publicvoidsetIcon(IcondefaultIcon)
设置按钮的默认图标
publicStringgetText()
返回按钮的文本
publicvoidsetEnabled(booleanb)
当为false时,按钮将不能被按下,系统默认为true
【例9.5】按钮示例程序
importjava.awt.FlowLayout;
importjavax.swing.Icon;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
publicclassExp95extendsJFrame{
privateFlowLayoutflowlayout1;//创建流式布局flowlayout1
privateJButtonbtn1;//创建按钮btn1
privateJButtonbtn2;//创建按钮btn2
privateJButtonbtn3;//创建按钮btn3
publicExp95(){
this.setTitle("按钮示例");
flowlayout1=newFlowLayout();
this.setLayout(flowlayout1);
Iconicon=newImageIcon("imag/main.jpg");//加载imag文件夹下的图片
btn1=newJButton("文本only");//实例化btn1为只有文本的按钮
btn2=newJButton(icon);//实例化btn2为只有图片的按钮
btn3=newJButton("文本和图片",icon);//实例化btn3为含图片文本的按钮
this.add(btn1);//将btn1添加到窗体
this.add(btn2);//将btn2添加到窗体
this.add(btn3);//将btn3添加到窗体
this.setBounds(0,0,400,300);//设置窗体的位置和大小
pack();
this.setVisible(true);//设置窗体可见性
}
publicstaticvoidmain(String[]args){
newExp95();
}
}
运行结果:
图9-16按钮示例运行结果
9.4.6JLabel
JLabel(标签)对象可以显示文本、图像或同时显示两者。
表9-7JLabel构造方法
构造方法
方法含义
publicJLabel()
创建空字符串的标签
publicJLabel(Stringtext)
创建具有文本的标签
publicJLabel(Iconimage)
创建具有图像的标签
publicJLabel(Stringtext,int
horizontalAlignment)
创建一个具有文本、对齐方式的标签,默认垂直居中
publicJLabel(Stringtext,Iconicon,inthorizontalAlignment)
创建具有文本、图像的标签,默认垂直居中
JLabel的常用方法如下表所示:
表9-8JLabel常用方法
常用方法
方法含义
publicvoidsetText(Stringtext)
设置JLabel显示的文本
publicStringgetText()
返回JLabel显示的文本
【例9.6】标签示例程序
importjava.awt.Color;
importjava.awt.FlowLayout;
importjavax.swing.BorderFactory;
importjavax.swing.Icon;
importjavax.swing.ImageIcon;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
publicclassExp96extendsJFrame{
privateFlowLayoutflowlayout1;//创建流式布局flowlayout1
privateJLabellbl1;//创建标签lbl1
privateJLabellbl2;//创建标签lbl2
privateJLabellbl3;//创建标签lbl3
privateJLabellbl4;//创建标签lbl4
publicExp96(){
this.setTitle("标签示例");
flowlayout1=newFlowLayout();
this.setLayout(flowlayout1);
Iconicon=newImageIcon("imag/main.jpg");//加载imag文件夹下的图片
lbl1=newJLabel("文本");//实例化lbl1为只有文本的标签
lbl2=newJLabel(icon);//实例化lbl2为只有图片的标签
//实例化lbl3为含图片、文本、对齐方式的标签
lbl3=newJLabel("文本、图片和对齐方式",icon,JLabel.LEFT);
//实例化lbl4具有文本和对齐方式的标签
lbl4=newJLabel("文本和对齐方式");
//为标签设置边框,颜色为红色,宽度为3
lbl1.setBorder(BorderFactory.createLineBorder(Color.red,3));
lbl2.setBorder(BorderFactory.createLineBorder(Color.red,3));
lbl3.setBorder(BorderFactory.createLineBorder(Color.red,3));
lbl4.setBorder(BorderFactory.createLineBorder(Color.red,3));
this.add(lbl1);//将lbl1添加到窗体
this.add(lbl2);//将lbl2添加到窗体
this.add(lbl3);//将lbl3添加到窗体
this.add(lbl4);//将lbl4添加到窗体
this.setBounds(0,0,400,300);//设置窗体的位置和大小
pack();
//设置窗体的关闭方式
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见性
this.setVisible(true);
}
publicstaticvoidmain(String[]args){
newExp96();
}
}
运行结果:
图9-17标签示例运行结果
【知识拓展】
1.WindowBuilder的安装
(1)查看Eclipse的版本
选择“help”菜单下的“AboutEclipse”菜单项,打开“AboutEclipse”窗口,查看Eclipse的版本,如下所示:
图9-19Help菜单下的AboutEclipse菜单项
图9-20AboutEclipse窗口
(2)找到windowbuilder对应的下载地址
打开下面的网址:
http:
//www.eclipse.org/windowbuilder/download.php,如下图所示,按相应的版本选择“link”,打开网页,复制得到如下地址:
http:
//download.eclipse.org/windowbuilder/WB/integration/4.7/
图9-21windowbuilder下载页面
(3)在eclipse中,单击help菜单,选择installnewsoftware。
图9-22InstallNewSoftware菜单项
图9-23弹出Install对话框
(4)在workwith文本框中复制刚才得到的链接,按回车键,单击“next”,如下所示:
图9-24弹出Install对话框
(5)接着选择“next”,选择“我接受协议”,如下图,单击“finish”,进入安装。
安装完毕后重启。
图9-25安装协议界面
2.WindowBuilder的使用
WindowBuilder的安装,可以使我们通过拖拽放置各个控件,而不用再写繁复的代码。
使用步骤如下:
(1)利用WindowBuilder新建项目,从Eclipse菜单中选择“new”,然后选择“other”,选择JFrame,如下图所示:
图9-26新建—向导选择对话框
图9-27SwingDesigner向导
(2)在下面的窗体中填入JFrame的名字,单击“Finish”按钮即可创建JFrame窗体,如下图所示:
图9-28新建JFrame窗体
(3)在代码窗口的底部有两个选项卡Source和Design,