第11讲 JAVA图形用户界面设计之主要组件(一)
Java图形用户界面设计(Swing)的介绍
Java图形⽤户界⾯设计(Swing)的介绍前⾔Swing是⼀个⽤于开发Java应⽤程序⽤户界⾯的开发⼯具包。
它以抽象窗⼝⼯具包(AWT)为基础使跨平台应⽤程序可以使⽤任何可插拔的外观风格。
Swing开发⼈员只⽤很少的代码就可以利⽤Swing丰富、灵活的功能和模块化组件来创建优雅的⽤户界⾯。
Swing 是⼀个为Java设计的GUI⼯具包。
Swing是JAVA基础类的⼀部分。
Swing包括了图形⽤户界⾯(GUI)器件如:⽂本框,按钮,分隔窗格和表。
Swing提供许多⽐AWT更好的屏幕显⽰元素。
它们⽤纯Java写成,所以同Java本⾝⼀样可以跨平台运⾏,这⼀点不像AWT。
它们是JFC的⼀部分。
它们⽀持可更换的⾯板和主题(各种操作系统默认的特有主题),然⽽不是真的使⽤原⽣平台提供的设备,⽽是仅仅在表⾯上模仿它们。
这意味着你可以在任意平台上使⽤JAVA⽀持的任意⾯板。
轻量级组件的缺点则是执⾏速度较慢,优点就是可以在所有平台上采⽤统⼀的⾏为。
Hello World 程序HelloWorldSwing.java ⽂件代码如下:import javax.swing.*;public class HelloWorldSwing {/**{* 创建并显⽰GUI。
出于线程安全的考虑,* 这个⽅法在事件调⽤线程中调⽤。
*/private static void createAndShowGUI() {// 确保⼀个漂亮的外观风格JFrame.setDefaultLookAndFeelDecorated(true);// 创建及设置窗⼝JFrame frame = new JFrame("HelloWorldSwing");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 添加 "Hello World" 标签JLabel label = new JLabel("Hello World");frame.getContentPane().add(label);// 显⽰窗⼝frame.pack();frame.setVisible(true);}public static void main(String[] args) {// 显⽰应⽤ GUIjavax.swing.SwingUtilities.invokeLater(new Runnable() {public void run() {createAndShowGUI();}});}}执⾏以下命令输出结果:$ javac HelloWorldSwing.java$ java HelloWorldSwing⼀个⽤户登录框实例SwingLoginExample.java ⽂件代码如下:import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;public class SwingLoginExample {public static void main(String[] args) {// 创建 JFrame 实例JFrame frame = new JFrame("Login Example");// Setting the width and height of frameframe.setSize(350, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/* 创建⾯板,这个类似于 HTML 的 div 标签* 我们可以创建多个⾯板并在 JFrame 中指定位置* ⾯板中我们可以添加⽂本字段,按钮及其他组件。
java图形用户界面设计教程
每个组件也有自己的初始大小。 当窗口设置的宽度小于组件的初始宽度时, 窗口宽度会 自动变为组件的宽度,但窗口高度不会改变。 在摆放组件时,如果不设定组件的对齐方式,那么 FlowLayout 布局管理器是按居中对 齐的方式摆放组件的。也可以通过向 FlowLayout 构造方法传递参数的方式设置所需的对齐 方式。FlowLayout 布局管理器的对齐方式有: FlowLayout.CENTER、FlowLaout.TRAILING 和 FlowLayout.LEADING。分别表示居中对齐、右对齐和左对齐。 设置的方法如下面的语句所示: contentPane.setLayout(new FlowLayout(FlowLayout.LEADING)); 这语句可以将组件的对齐方式设置为左对齐 还可以设置组件之间的水平和垂直间距。 设置的方法如下面的语句所示: contentPane.setLayout(new FlowLayout(FlowLayout.LEADING , 50 , 50)); 这条语句的含义就是将组件间的水平和垂直间距都设置为 50。
图 4-2 FlowLayout 布局管理器
2. 任务实施 任务 1 中的第 9 行就是对窗口布局的设置语句。语句如下: contentPane.setLayout(new GridLayout(5,1)); 只要对这一行进行更改,就可以达到应用 FLowLayout 布局管理器的目的。 contentPane 是一个对象,它指向的是 Container 类。关于这个类的含义和作用会在以后 的章节中详细讲解。读者暂时只需要知道 contentPane 引用是指向所建立的“帮助窗口”就 可以了。 从 contentPane 所调用的 setLayout()方法的方法名的含义就可以知道这个方法的作用 — 设置(set)布局(layout) 。通过对这个方法的参数赋予不同布局管理器的引用,达到对窗 口进行布局设置的目的。 要实现将“帮助窗口”的布局管理器设置为 FlowLayout,只需要做如下的更改。 contentPane.setLayout(new FlowLayout()); 其中的参数 new FlowLayout() 实际上是 FlowLayout 类的一个引用。这条语句的含义就 是:将 contentPane 所指向窗口的布局管理器设置成 FlowLayout。 还有另外一种设置布局管理器的方法。如下语句所示。 语句 1:FlowLayout flow= new FlowLayout(); 语句 2:contentPane.setLayout(flow); 语句 1 创建了 FlowLayout 布局管理器的引用。语句 2 将语句 1 所创建的 flow 引用作为 参数传递给 setLayout ()方法。 flow 引用等价于 new FlowLayout()。 因此, 语句 contentPane.setLayout(new FlowLayout()) 实际上是语句 1 和语句 2 的组合写法。 3. 分析与提高 FlowLayout 布局管理器是 Panel 和 Applet 容器的默认局管理器。 如果不专门对 Panel 和 Applet 进行布局管理器设置的话,它们的组件的布局将按 FlowLayout 进行管理。 Panel 和 Applet 都是一种容器。Panel 和窗口很类似,Applet 是嵌在浏览器中使用的一种客容器。这 两个容器会在后面的章节中介绍。 FlowLayout 布局管理器对窗口中的组件的管理是与窗口的大小有关的。在任务 1 中有 如下的语句: win.setSize(200,200); 这条语句设置了窗口的初始值大小。第一个参数为窗口的宽度,第二个参数为窗口的高度。 FlowLayout 布局管理器会根据这个大小来摆放组件。如果我们使用拖动的方法,改变窗口 的大小,窗口中组件的排列方式也会跟着改变。
java_11GUI编程
窗体Frame
public void dispose()
– //可以撤销当前窗口,释放窗口所使用的资源
Frame是Window的子类,凡是Window子类的对 象都引发WindowEvent事件。 当一个Frame窗口被激活、撤销激活、打开、关 闭、最小化或撤销最小化,就会引发窗口事件, 获得监视器的方法如下: public void addWindowListener(WindowListener)
BorderLayout(边框布局)
构造函数
BorderLayout();
//各组件纵、横间距为0 BorderLayout(int hgap, int vgap); //hgap横间距,vgap纵间距,象素为单位
add (组件,位置);
位置可取值:
BorderLayout.NORTH[WEST,CENTER,EAST,SOUTH]
容器(Container )
AWT中的容器
Window Frame(重点掌握) Dialog Panel Applet
Frame 窗体
介绍:Frame是一个带有边框、标题栏、菜单的图形 容器。 构造方法:
Frame() 创建一个空白框架 Frame(String s) 创建一个使用 s 做标题的框架。 Frame类常用的方法: public void setIconImage(Image image):设置窗体显示的图 标 public void setMenuBar(MenuBar menubar):加载窗体使 用的菜单对象 public void setLayout(LayoutManager manager):设置窗体 使用的布局管理器
JAVA图形界面教案
第十一章、图形用户界面总论:本章学习图形界面的初步知识,包括图形界面的概述,容器类,布局管理器,辅助类,绘图等知识点。
1、图形界面的概述Java中有两个包负责图形界面的构建:swing和awt。
awt包中的类主要是调用当前操作系统的组件来实现GUI编程,特点是速度快,但是跨平台性很差,称为重型组件。
swing包中的类主要是模拟组件来实现GUI编程,由于是模拟组件,所以他的速度较慢,但跨平台性很好.称为轻型组件,swing包的类都以J开头,以示和awt包中的类进行区分2、GUI类分为三组:容器类(Jframe、jpanel、jdialog)、组件类(Jbutton、jlabel)和辅助类(Font、graphics、color、dimension、fontmetrics)这些类都是java设计人员精心设计的类,供我们直接使用。
3、所有图形界面组件的关系如下:Awt中的component类是所有swing和awt类的根类Awt中的container类是所有容器类的根类Swing中的所有组件类(组件)均继承自jcomponent类第一节.容器类与布局管理器1、容器,即可以盛放其他组件的组件。
主要有如下几个:●Container:一个容器类,他的实例常用作接受其他的容器引用。
●Jframe:框架(窗体),类似于Windows系统中的窗口。
●Jdialog:用来设计对话框。
2、JFrame类该类的对象即是一个窗口,其构造方法可以带参数(窗体名字),也可以不带参数。
该类有一系列的方法可以调用。
见下例:例子:JFrame的基本用法(1)生成一个窗口(2)能够关闭生成的窗口(3)让窗口居中(4)加上一个按钮(5)窗口和按钮上的文字●所有的图形界面类都是先生成对象,然后通过对象的方法来设置界面●每个类方法众多,记住最常用的,知道有其他的,边用边学。
要随时查看API手册。
●本例子的方法有:设置大小,添加组件,删除组件,设置位置,关闭窗口等●Dimension是一个类,用来把一个对象的高和宽封装到一个Dimension对象中●Toolkit是一个工具类,能够提供一系列的方法。
图形用户界面概述和javaawt包共205页
1
0
、
倚
南
窗
以
寄
傲
,
审
容
膝
之
易
安
。
66、节制使快乐增加并使享受加强。 ——德 谟克利 特 67、今天应做的事没有做,明天再早也 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德 69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭
文 家 。汉 族 ,东 晋 浔阳 柴桑 人 (今 江西 九江 ) 。曾 做过 几 年小 官, 后辞 官 回家 ,从 此 隐居 ,田 园生 活 是陶 渊明 诗 的主 要题 材, 相 关作 品有 《饮 酒 》 、 《 归 园 田 居 》 、 《 桃花 源 记 》 、 《 五 柳先 生 传 》 、 《 归 去来 兮 辞 》 等 。
图形用户界面概述和javaawt包
6
、
露
凝
无
游
氛
,
天
高
风
景
澈
。பைடு நூலகம்
7、翩翩新 来燕,双双入我庐 ,先巢故尚在,相 将还旧居。
8
、
吁
嗟
身
后
名
,
于
我
若
浮
烟
。
9、 陶渊 明( 约 365年 —427年 ),字 元亮, (又 一说名 潜,字 渊明 )号五 柳先生 ,私 谥“靖 节”, 东晋 末期南 朝宋初 期诗 人、文 学家、 辞赋 家、散
图形用户界面中常用组件
JComboBox组件
❖ JComboBox组件称为下拉列表框。
❖ 特点:将所有选项折叠收藏在一起,只显示 前面的或被用户选中的一个;用户可以在列 表中进行选择、或者直接输入所要的选项
事件响应
❖ JComboBox组件能够响应的事件分为选择 事件与动作事件。若用户选取下拉列表中 的选择项时,则激发选择事件,使用 ItemListener事件监听者进行处理;若用户 在JComboBox上直接输入选择项并回车时, 则激发动作事件,使用ActionListener事件 监听者进行处理。
❖ 产生事件时必须将按钮注册给实现ActionListener的 对象,同时编写该接口的actionPerformed (ActionEvent e)方法体。
❖ 监听器ActionListener接口,只有一个成员方法 actionPerformed (ActionEvent e)
❖ ActionEvent常用方法: getSource():获取引发事件的对象引用。 getActionCommand():获得与此动作相关的命令字符 串
例子
JTextField与JTextArea组件
❖ JtextField被称为文本框。它定义了一个单 行条形文本区,可以输出任何基于文本的 信息,也可以接受用户的输入。
❖ JTextArea被称为文本域。它与文本框的主 要区别是:文本框只能输入/输出一行文本, 而文本域可以输入/输出多行文本。
事件处理
事件响应
❖ JList组件的事件处理一般可分为两种:一种是当 用户单击列表框中的某一个选项并选中它时,将 产生ListSelectionEvent类的选择事件,此事件是 Swing的事件;另一种是当用户双击列表框中的 某个选项时,则产生MouseEvent类的动作事件。 JList类通过locatToindex( )方法来得知是单击还是 双击。
第十一章 GUI编程
第十一章: GUI编程一.GUI -- Graphical User InterfaceAWT (抽象窗口工具集) AbstractWindow Toolkit为简单的applet程序设计AWT没有提供足够的桌面端的程序所需的特性它不适宜用来构建丰富的桌面图形界面SwingSwing是AWT的扩展和功能加强是构建java图形界面标准的APISWT (Standard Widget Toolkit)是一个开源的GUI编程框架SWT是IBM为它的Eclipse集成开发环境而开发的图形用户界面工具AWTAWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application 的GUI (Graphics User Interface 图形用户界面)编程。
GUI的各种元素(如:窗口,按钮,文本框等)由Java 类来实现。
AWT所涉及的类一般在java.awt包及其子包中。
Container和Component是AWT中的两个核心类。
Modal ModelessComponent & ContainerJava的图形用户界面的最基本组成部分是Component ,Component 类及其子类的对象用来描述以图形化的方式显示在屏幕上并能与用户进行交互的GUI元素,例如,一个按钮,一个标签等。
一般的Component对象不能独立地显示出来,必须将“放在”某一的Container对象中才可以显示出来。
Container是Component子类,Container子类对象可以“容纳”别的Component 对象。
Container对象可使用方法add(..)向其中添加其他Component对象。
Containter是Component的子类,因此Containter对象也可以被当作Component对象添加到其他Container对象中。
有两种常用的Containter:Window: 其对象表示自由停泊的顶级窗口Panel: 其对象可作为容纳其它Component对象,但不能独立存在,必须被添加到其它Containner中(如Window 或Applet)FrameFrame是Window的子类,由Frame或其子类创建的对象为一个窗体。
Java实用教程 第11章 AWT图形用户界面编程
fr.add(p1, BorderLayout.NORTH);
// 将p1添加到窗口NORTH区域(即顶部)
Panel p2 = new Panel();
// 创建面板p2
p2.setLayout(new GridLayout(4, 5, 3, 3));
// 设置p2使用GridLayout布局
String[] name = {"7", "8", "9", "÷", "√", "4", "5", "6", "×", "%"
AWT容器
Window和Frame
Window和Frame
Window有两个子类:Frame和Dialog。Frame带有标题,而且可以调整大小。Dialog可以被移动, 但是不能改变大小。Frame有一个构造方法Frame(String title),通过它可以创建一个以参数为标题 的Frame对象。Frame的add()方法向容器中加入其他组件。Frame被创建后是不可见的,必须通过 以下步骤使它成为可见。
setLocation()、setSize()或setBounds() 方法,为它们在容器中一一定位。
布局管理器
1.流式布局管理器
FlowLayout是把组件从左向右、从上向下,一个接一个地放到容器中,组件之间的默认间隔 (水平和垂直)为5个像素,对齐方式为居中。组件的大小由布局管理器根据组件的最佳尺寸 来决定。 FlowLayout的构造方法:
, "1", "2", "3", "-", "1/x", "0", ".", "C", "+", "±"};
java培训图形用户界面设计
11.1.2 java的AWT组件和Swing组件
1.基本概念
– 向容器组件中添加组件 panel.add(button);
– 顶层容器是一个能够提供图形绘制的容器,是进行图形编程的基 础,一切图形化的东西,都必然包括在顶层容器中。
•JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。 •JDialog:和JFrame类似,只不过JDialog是用来设计对话框。 •JApplet:用来设计可以在嵌入在网页中的Java小程序。 ★每一个窗口应用程序中有且只能有一个顶层容器组件。
– (1)创建的JFrame窗口是不可见的,要使得可见, 需要使用show()方法或setVisible(Boolean b)方法, 其中setVisible中的参数b=true。
– (2)使用setSize方法设置窗口大小。 – (3)向JFrame中添加组件时,必须先取得
ContentPane,然后再使用add()方法把组件加入到 ContentPane中,这与AWT包中的Frame直接使用 add()方法添加组件不同。
18.
contentPane.setLayout(new FlowLayout());
19.
JPanel jpanel1=new JPanel();
20.
fillJPanel( jpanel1);
21.
jpanel1.setBackground(Color.BLUE);
22.
jpanel1.setForeground(Color.RED);
–
Container contentPane=();
–
contentPane.setLayout(new FlowLayout());
11 GUI
11/56
2.常用组件
2.1 java.awt包与javax.swing包 awt包: Abstract Window ToolKit,包含生成GUI的各种类 和接口,如绘制图形、设置字体和颜色、控制组件、 处理事件等内容,AWT是Java语言进行GUI程序设计 的基础。 提供了基本的java程序GUI设计工具。 组件Component 容器Container 布局管理器LayoutManager
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }
}
21/56
import javax.swing.*; public class TestJComp extends JFrame { public TestJComp() { super("主窗口"); JButton button=new JButton("按钮"); button.setBounds(10, 0, 100, 30);
第十一章swing-1
描述
用指定的显示文本构造一个新的文本区 设置文本区的字体 获取文本区中的文本字符串
12
版本 1.0
课程 1
幻灯片 12,共 30 张
Java 编程语言
JButton 方法
JButton( )
说明
创建不带文本和图标的按钮
JButton(Icon icon)
JButton(String text) JButton(String text, Icon icon)
版本 1.0
课程 1
幻灯片 8,共 30 张
Java 编程语言
Swing GUI 组件 JTexField
JComboBox
JLabel
JCheckBox
JTexArea
9
JRadioButton
JButton
课程 1 幻灯片 9,共 30 张
版本 1.0
Java 编程语言
JLabel 方法
JLabel()
版本 1.0
课程 1
幻灯片 19,共 30 张
Java 编程语言
布局管理器
•用户界面上的屏幕组件可以按照一定的格式 布局 例如水平排列,或按网格方式排列 •布局管理器类是一组类,它
• 实现 youtManager 接口 • 帮助在容器中放置组件
•Java 中可用的各种布局如下:
将项添加至项的列表 返回指定索引位置的列表项 返回列表(作为对象)中的项数 将当前选择的项作为一个对象返回 返回当前选择项的索引位置
16
版本 1.0
课程 1
幻灯片 16,共 30 张
Java 编程语言
事件处理程序 3-1
用户交互
单击鼠标 按下/释放鼠标按钮
java图形用户界面
TextField
15 Characters
customerPackage
ComboBox
Default
customerAge
TextField
2 Characters
识别框架窗口的标题和大小
将显示客户材料框架窗口的标题是“Customer Details Form”. 此窗口的大小是 300 x 300 象素.
创建组件 为了在某个界面中使用某个组件,你必须创建该组件类的 一个对象,以组件JButton为例进行说明 JButton(String ):创建带有指定文本的按钮 JButton(Icon ):创建带有指定图标的按钮 JButton(String , Icon ):创建带有指定文本和图标的按钮 JButton play= new JButton(“播放”); JButton stop= new JButton(“停止”); 将组件添加到容器中 可以调用容器的add(Component)方法,最简单的容器是面 板(JPanel)如: JButton quit= new JButton(“退出”); JPanel panel= new JPanel( ); Panel.add(quit);
Java中构成图形用户界面的各种元素和成分可以被分为 三类:
容器:用来组织其他界面成分和元素的单元,一个图 形用户界面首先对应一个复杂的容器,例如一个窗口或 一个对话框。
GUI组件:是图形用户界面的最小单位之一,如按纽 、文本框等,使用组件通常需要如下 步骤:(a)创建某控 制组件类的对象,指定大小等属性;(b)使用某种布局策 略,将组件加入到容器的指定位置处;(c)将该组件对象 注册给事件监听者。
import javax.swing.*; public class Buttons extends JFrame { static JFrame frameObject; public static void main(String args[]) { frameObject=new JFrame(“customer details”) frameObject.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frameObject.SetVisible(true); frameObject.SetSize(300,300); }}
Java的图形用户界面设计共55页
服从真理,就能征服一切事物
Java的图形用户界面设计
AWT与Swing
▪ AWT
▪ Java抽象窗口工具集(Abstract Window Toolkit,简称AWT)
▪ Swing
▪ Swing属于JavaTM Foundation Classes(简 称JFC)的一部分,JFC包含了一组帮助程序员 创建图形用户界面的功能。AWT功能有限,因 此在后来的JDK版本中,又提供了功能更强的 Swing
将组件放入内容窗格
▪ 创建一个新的内容窗格取代顶层容器缺省
的内容窗格。创建一个JPanel的实例,然 后将组件添加到JPanel实例中,再通过顶 层容器的setContentPane()方法将JPanel实 例设置为新的内容窗格(程序2)
JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout()); contentPane.add(button, BorderLayout.CENTER); frame.setContentPane(contentPane);
面板(JPanel)
▪ 面板(JPanel)是一种用途广泛的容器
▪ 与顶层容器不同的是,面板不能独立存在,
必须被添加到其他容器内部
▪ 面板可以嵌套,由此可以设计出复杂的图
形用户界面
程序3
▪ 创建一个黄色面板,通过add()方法在面板
中添加了一个按钮,然后将该面板添加到 import java.awt.*;
一im个portJjFavraxa.smwinge.*的; 实例中,JFrame实例的背 public class FrameWithPanel {
第11讲 JAVA图形用户界面设计之主要组件(一)
例8.5程序运行结果如图所示
8.3.3 边界布局(BorderLayout)
这种布局将组件按5个区域来安排:北区、西区、 这种布局将组件按 个区域来安排:北区、西区、南 个区域来安排 东区和中区,分别对应于窗口的顶部、左部、底部、 区、东区和中区,分别对应于窗口的顶部、左部、底部、 右部和中部。其构造函数如下: 右部和中部。其构造函数如下:
例8.8 演示CardLayout的简单用法。
import java.applet.Applet; import java.awt.*; public class CardLayoutDemo extends Applet{ private Label card1,card2,card3,card4; public void init(){ card1=new Label("Card1"); card2=new Label("Card2"); card3=new Label("Card3"); card4=new Label("Card4"); CardLayout myCard=new CardLayout(); setLayout(myCard); add("Card1",card1); add("Card2",card2); add("Card3",card3); add("Card4",card4); myCard.show(this,"Card2"); myCard.next(this); } }
例8.6 演示BorderLayout的使用。
import java.applet.Applet; import java.awt.*; public class BorderLayoutDemo extends Applet{ public void init(){ //set layout to border layout setLayout(new BorderLayout()); //add five buttons in any order add(new Button("North"),BorderLayout.NORTH); add(new Button("South"),BorderLayout.SOUTH); add(new Button("Center"),BorderLayout.CENTER); add(new Button("West"),BorderLayout.WEST); add(new Button("East"),BorderLayout.EAST); } }
java图形用户界面设计
实验名称:图形用户界面设计一、实验目的1.掌握常用图形界面组件(按钮、文本框等)对象的创建及其常用方法的使用。
如,按钮的常用方法是getLabel(),文本框的常用方法有setText(),getText()等。
2.掌握常用的布局管理类CardLayou,BorderLayout,FlowLayout,GridLayout的使用策略。
能够将它们联合起来使用。
3.掌握java语言的事件处理。
每个事件对应的接口(或适配器类)是什么,每个接口有哪些方法,如何进行委托处理,被委托者必须做什么。
二、实验环境(软件、硬件环境)PC机JDK包三、实验原理通过图形用户界面(GUI),用户和程序之间可以方便地进行交互。
javax.swing包中的组件类可以帮助我们完整界面的设计。
javax.swing包的JComponent类是java.awt包中的Container 类的一个直接子类、Component类的间接子类。
javax.swing包中的JFrame类和JDialog类分别是java.awt包中Frame类和Dialog类的直接子类、Window类的间接子类。
在学习GUI编程时,必须很好地理解并掌握两个概念:容器类和组件类,必须很好地掌握java的事件处理机制。
四、实验容及步骤实验容:密码验证问题。
编写一个Java程序,实现用户根据自己的密码进入界面,如果用户输入信息正确,则输出“欢迎XXX用户”,否则用户还可以尝试两次,如果尝试阶段输入信息错误,则输出“请输入正确的信息”,如果尝试失败,用户则退出。
调试并编译程序PasswordVerification.java,运行该程序,运行结果如图8-1、图8-2、图8-3和图8-4所示,请将程序中的代码1~代码7补充完整。
图8-1 运行结果,输入正确信息图8-2 显示欢迎信息图8-3 运行结果,输入错误信息图8-4 显示重新输入信息程序清单://PasswordVerification.javaimport javax.swing.*;import java.awt.event.*;import java.awt.*;public class PasswordV erification extends JFrame{JLabel userLabel;JLabel passwordLabel;JTextField userText;JPasswordField passwordText;int count=1;//统计输入信息的次数public PasswordVerification(){super("请输入信息");Container c =代码1;//得到容器对象containerc.setLayout(new FlowLayout());//设置默认布局userLabel=代码2//创建用户标签passwordLabel=代码3;//创建密码标签userText=代码4//创建用户文本输入框passwordText=代码5//创建密码输入文本框passwordText. 代码6(new ActionListener(){ //注册事件监听者public void actionPerformed(代码7)//事件处理{String userName=new String("三");//假设为正确的用户名String password=new String("12345678");//假设为正确的密码if(e.getSource()==passwordText){count++;char[] passwords=passwordText.getPassword();if(userText.getText().equals(userName)&&password.equals(new String(passwords))){JOptionPane.showMessageDialog(null,"欢迎您:"+userName);System.exit(0);}else if(count>3)System.exit(0);else {JOptionPane.showMessageDialog(null,userText.getText()+"请输入正确信息");}}}});c.add(userLabel);c.add(userText);c.add(passwordLabel);c.add(passwordText);setSize(240,100);setVisible(true);}public static void main(String[] args){PasswordVerification pv=new PasswordV erification();pv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}五、实验数据及处理import javax.swing.*;import java.awt.event.*;import java.awt.*;public class PasswordVerification extends JFrame{JLabel userLabel;JLabel passwordLabel;JTextField userText;JPasswordField passwordText;int count=1;//统计输入信息的次数public PasswordVerification(){super("请输入信息");Container c =getContentPane();//得到容器对象containerc.setLayout(new FlowLayout());//设置默认布局userLabel=new JLabel("用户:");//创建用户标签passwordLabel=new JLabel("密码:");//创建密码标签userText=new JTextField(5);//创建用户文本输入框passwordText=new JPasswordField(5);//创建密码输入文本框 passwordText.addActionListener(new ActionListener() { //注册事件监听者public void actionPerformed( ActionEvent e) //事件处理{String userName=new String("三");//假设为正确的用户名String password=new String("12345678");//假设为正确的密码 if(e.getSource()==passwordText){count++;char[] passwords=passwordText.getPassword();if(userText.getText().equals(userName)&&password.equals(new String(passwords))){JOptionPane.showMessageDialog(null,"欢迎您:"+userName);System.exit(0);}else if(count>3)System.exit(0);else {JOptionPane.showMessageDialog(null,userText.getText()+"请输入正确信息");}}}});c.add(userLabel);c.add(userText);c.add(passwordLabel);c.add(passwordText);setSize(240,100);setVisible(true);}public static void main(String[] args){PasswordVerification pv=new PasswordVerification();pv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}运行结果:思考:(1)程序PasswordVerification.java中第3行语句java.awt.*的作用是什么?答:添加容器类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.1 命令按钮(Button)
按钮由Button类创建,而Button类是由 类创建, 类是由Component 按钮由 类创建 类是由 类直接扩展的。要想使Button可见,必须使用 可见, 类直接扩展的。要想使 可见 必须使用add方法将 方法将 它们添加到一个容器中。 它们添加到一个容器中。 Button类的构造函数及常用方法如图所示。 类的构造函数及常用方法如图所示。 类的构造函数及常用方法如图所示
例8.7 演示GridLayout的使用。
import java.applet.Applet; import java.awt.*; public class GridLayoutDemo extends Applet{ public void init(){ setLayout(new GridLayout(3,3)); for(int i=1;i<=8;i++){ add(new Button("Button" + i)); } } }
例8.3程序运行结果如图所示
8.3 布局管理器
8.3.1 布局管理器概述 布局管理器会依据组件的加入顺序决定其摆放方 组件的大小、形状、位置, 式。组件的大小、形状、位置,在不同的布局管理器 下有显著的不同。此外, 下有显著的不同。此外,布局管理器会自动适应小程 序或应用程序窗口的大小, 序或应用程序窗口的大小,所以如果某个窗口的大小 改变了,那么其上各个组件的大小、形状、 改变了,那么其上各个组件的大小、形状、位置都有 可能发生改变。 可能发生改变。 Java提供以下几种布局管理器: 提供以下几种布局管理器: 提供以下几种布局管理器 流布局(FlowLayout)、边界布局 流布局 、边界布局(BorderLayout)、 、 网格布局(GridLayout)、网格包布局 网格布局 、网格包布局(GridBagLayout)、 、 卡片布局(CardLayout)和手工布局。 卡片布局 和手工布局。 Panel、Applet的默认布局为流布局,Window、 的默认布局为流布局, 、 的默认布局为流布局 、 Frame的默认布局为边界布局。 的默认布局为边界布局。 的默认布局为边界布局
例8.1 按钮组件
import java.applet.Applet; import java.awt.*; public class MyButtons extends Applet{ private Button button1,button2,button3; public void init() { button1=new Button("Click here"); button2=new Button("Sorry, I do nothing"); button3=new Button(); //add buttons add(button1); add(button2); add(button3); } }
例8.8程序运行结果如图所示
课堂小结 ketang xiaojie
命令按钮的使用 标签框的使用
布局管理器的使用
谢谢!
例8.4 演示FlowLayout的使用。
程序中创建了10个按钮, 程序中创建了 个按钮,并设置布局管理器的对齐方式为左对 个按钮 齐。 import java.applet.Applet; import java.awt.*; public class FlowLayoutDemo extends Applet{ public void init(){ setLayout(new FlowLayout()); for(int i=0;i<8;i++){ add(new Button("Button"+i)); } } }
例8.8 演示CardLayout的简单用法。
import java.applet.Applet; import java.awt.*; public class CardLayoutDemo extends Applet{ private Label card1,card2,card3,card4; public void init(){ card1=new Label("Card1"); card2=new Label("Card2"); card3=new Label("Card3"); card4=new Label("Card4"); CardLayout myCard=new CardLayout(); setLayout(myCard); add("Card1",card1); add("Card2",card2); add("Card3",card3); add("Card4",card4); myCard.show(this,"Card2"); myCard.next(this); } }
例8.6程序运行结果如图所示
8.3.4 网格布局(GridLayout)
网格布局将容器划分成网格, 网格布局将容器划分成网格,这样各个组件就可以按 行列放置到每个网格中,每个组件的大小一样。 行列放置到每个网格中,每个组件的大小一样。在向 GridLayout添加组件时,其顺序是从网格的左上角开始, 添加组件时, 添加组件时 其顺序是从网格的左上角开始, 从左向右排列,直到排满一行, 从左向右排列,直到排满一行,再从下一行开始从左向右 依次排列。 类的构造函数如下: 依次排列。GridLayout类的构造函数如下: 类的构造函数如下
import java.applet.Applet; import java.awt.*; public class MyLabel extends Applet{ private Label label1,label2; public void init() { label1=new Label(); //create a Label without text //create a Label with a string argument label2=new Label("Label with text"); //add labels to applet add(label1); add(label2); } }
Hale Waihona Puke 例8.6 演示BorderLayout的使用。
import java.applet.Applet; import java.awt.*; public class BorderLayoutDemo extends Applet{ public void init(){ //set layout to border layout setLayout(new BorderLayout()); //add five buttons in any order add(new Button("North"),BorderLayout.NORTH); add(new Button("South"),BorderLayout.SOUTH); add(new Button("Center"),BorderLayout.CENTER); add(new Button("West"),BorderLayout.WEST); add(new Button("East"),BorderLayout.EAST); } }
例8.1程序运行的结果如图所示。
8.2 标签(Label)
标签使用Label类来创建,而Label类是从 类来创建, 类是从Component类 标签使用 类来创建 类是从 类 直接扩展而来的。 直接扩展而来的。Label类的构造函数及常用方法 如图所示。 类的构造函数及常用方法 如图所示。
例8.2 标签控件
使用JAVA程序设计 程序设计 使用
上堂讲授 shangtang jiangshou
图形用户界面基本概念 基本组件的使用
窗体的使用
JAVA的 第8讲 JAVA的 图形用户界面设计 ----主要组件 主要组件( ----主要组件(一)
湖南财经高等专科学校信息管理系 李博
本章要点
掌握命令按钮的常用方法与常用属性 掌握标签框的常用方法与常用属性 了解如何使用布局管理器对组件进行管理
8.3.2 流布局(FlowLayout)
又称顺序布局。 又称顺序布局。这种布局管理器很单纯地将组件由左 至右依次排列在容器上, 至右依次排列在容器上,直到上端空间排满后才会移到下 一列;相同的水平排列方式不断持续进行下去。 一列;相同的水平排列方式不断持续进行下去。 FlowLayout的构造函数如下: 的构造函数如下: 的构造函数如下
例8.7程序运行结果如图所示
8.3.5 卡片布局(CardLayout)
CardLayout布局好像是将各个组件作为卡片排放到 布局好像是将各个组件作为卡片排放到 一个“卡片盒” 只有最上面的卡片可见。 一个“卡片盒”中,只有最上面的卡片可见。可以通过这 种布局的方法将卡片中的任何一张移到最上面。 种布局的方法将卡片中的任何一张移到最上面。通常每张 卡片都是一个容器(如面板 如面板) 卡片都是一个容器 如面板 。CardLayout类的构造函数 类的构造函数 及常用方法如下: 及常用方法如下:
例8.5程序运行结果如图所示
8.3.3 边界布局(BorderLayout)
这种布局将组件按5个区域来安排:北区、西区、 这种布局将组件按 个区域来安排:北区、西区、南 个区域来安排 东区和中区,分别对应于窗口的顶部、左部、底部、 区、东区和中区,分别对应于窗口的顶部、左部、底部、 右部和中部。其构造函数如下: 右部和中部。其构造函数如下:
例8.2程序的运行结果如图所示