ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:184.25KB ,
资源ID:5617120      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5617120.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(day23 GUI.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

day23 GUI.docx

1、day23 GUI1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 2. 图形交互方式 Java提供了专业的API用于开发图形用户界面 GUI- Graphic User Interface 将要了解GUI API的框架结构,以及GUI组件以及组件之间的关系,容器和布局管理器,颜色,字体等.2. GUI的分类2.1. AWT Java1.0版本的图形用户界面库,设计目标是帮助程序员编写在所有平台上都能良好表现的GUI程序。为了实现这个目标Java1.0提供了抽象

2、窗口工具集(AWT),但是这个目标并没有达到。AWT在所有的系统上表现都不好。因为:最初版本的AWT是在一个月内构思,设计和实现的(Think in Java )。Abstract Window Toolkit 抽象窗口工具集Java将图形用户界面相关的类捆绑在了一起,放在了一个称之为抽象窗口工具集的库中.AWT适合开发简单的图形用户界面,并不适合开发复杂的GUI项目.位于: java.awt.* 中,定义了很多的组件类,开发者可以直接创建对象加以使用缺点: 所有的图形界面都依赖于底层的操作系统,容易发生于特定平台相关的故障.AWT调用本地系统资源生成图形化界面, 依赖本地平台. 1.02.2

3、. SwingSUN公司对AWT进行了升级,基于AWT,推出了一种更稳定,更通用和更灵活的库.称之为Swing组件库(Swing component)。既然都是用于GUI设计的组件库,那么为了区分Swing组件类和对应的AWT组件类,Swing组件类都已字母J为前缀.位于:javax.swing.* 中,提供了和AWT中等同的所有的组件类,但是类名的前面多加了一个J.SWING可以跨平台. 1.2我们主要学习Swing GUI组件.3. Java GUI APIGUI API包含的类分为三个部分:组件类(component class) 容器类(container class),和辅助类(he

4、lper class)1. 组件类是用来创建用户图形界面的,例如JButton,JLabel,JTextField.2. 容器类是用来包含其他组件的,例如JFrame,JPanel3. 辅助类是用来支持GUI组件的,例如Color,Font3.1. 组件类在图形用户界面程序中当我们想要创建按钮、复选框和滚动条等这些可以显示在屏幕上的对象,该如何创建。其实这些都属于一类叫做组件类。AWT中的组件根类类 Componentjava.lang.Object java.awt.ComponentSwing中的组件根类javax.swing 类 JComponentjava.lang.Object ja

5、va.awt.Component java.awt.Container javax.swing.JComponent组件类的实例可以显示在屏幕上.Component类是包括容器类的所有用户界面类的根类是java.awt中的类,对应的Swing中的是Jcomponent.了解了Component和JComponent都是抽象类.所以不能使用new关键字创建对象.所以需要使用它们的具体的实现类来创建对象.在AWT中典型图形用户界面中的按钮(Button)、复选框(Checkbox)和滚动条(Scrollbar)都是组件类,都是Component类的子类. 在Swing中的GUI组件,有对应的JBu

6、tton,JCheckBox,JscrollBar继承关系图(AWT)3.2. 容器类容器(Container),是一个特殊的组件,该组件可以通过add()添加其他组件。容器类适用于盛装其他GUI组件的GUI组件.例如 Panel Frame Dialog都是AWT组件的容器类.对应的Swing组件的容器类是JPanel JFrame JDialog3.3. GUI辅助类用来描述GUI组件的属性,例如图像的颜色,字体等. 注意:辅助类是在java.awt中的 3.4. GUI运行原理在JDK的bin目录中有javaw.exe .javaw.exe是java在window中专门用于执行GUI程序

7、.4. 体验GUI import javax.swing.JFrame;import javax.swing.JOptionPane;public class Demo public static void main(String args) / 创建JFrame JFrame frame = new JFrame(hello,world); / 设置尺寸 frame.setSize(200, 100); / JFrame在屏幕居中 frame.setLocationRelativeTo(null); / JFrame关闭时的操作 frame.setDefaultCloseOperation(

8、JFrame.EXIT_ON_CLOSE); / 显示JFrame frame.setVisible(true); 5. Jframe框架JFrame(框架)是一个容器创建一个用户界面需要创建一个JFrame来存放用户界面组件.例如存放按钮,文本框。javax.swing 类 JFramejava.lang.Object java.awt.Component java.awt.Container java.awt.Window java.awt.Frame javax.swing.JFrame5.1. 创建一个框架 public class Demo1 public static void m

9、ain(String args) / 创建JFrame JFrame frame = new JFrame(我的frame); / 显示JFrame frame.setVisible(true); 注意:需要调用setVisible(true)方法后才会显示框架运行程序会在窗口的左上角显示一个窗口,但是只能显示标题栏,而且关闭JFrame时,程序程序没有停止.所以需要完成如下需求:1: 设置Jframe的宽度和高度2: 让Jframe显示在屏幕中间3: 关闭Jframe时,程序会停止5.1.1. 设置JFrame的宽度和高度java.awt.Window.setSize(int width,

10、int height)查找API文档,查看 setSize方法,可以指定框架的宽度和高度.参数类型是int,注意是以像素为单位,普通的笔记本的屏幕分辨率为1280*800或者1366*768.注意:分辨率表示每平方英寸的像素数.屏幕分辨率越高,屏幕的像素越多.所以分辨率越高看到的细节就越多.setSize方法被定义在java.awt.Component类中,被Component 的子类java.awt.Window 重写.而Jframe以继承了Windiws类所以也具备该方法.5.1.2. JFrame显示在屏幕中间setLocationRelativeTo()方法java.awt.Windo

11、w.setLocationRelativeTo(Component c)设置窗口相对于指定组件的位置。如果 c 为 null,则此窗口将置于屏幕的中央。setLocationRelativeTo(null)方法可以在屏幕上居中显示框架.如果不想要设置在中间,可以使用setLocation(200, 100);5.1.3. 关闭JFrame程序停止setDefaultCloseOperation(int operation)方法javax.swing.JFrame.setDefaultCloseOperation(int operation)该方法告诉程序,当框架关闭时结束程序.方法的参数是JF

12、rame 的常量EXIT_ON_CLOSE 添加完毕public class Demo1 public static void main(String args) / 创建JFrame JFrame frame = new JFrame(我的frame); / 设置尺寸 frame.setSize(200, 100); / JFrame在屏幕居中 frame.setLocationRelativeTo(null); / JFrame关闭时的操作 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 显示JFrame frame.setV

13、isible(true); 5.2. 框架中添加组件上述案例中的框架是空的.可以通过add方法在框架中添加组件java.awt.Container.add(Component comp)代码:public static void main(String args) / 创建JFrame JFrame frame = new JFrame(我的frame); / 创建按钮 JButton button = new JButton(OK); / 向frame中添加一个按钮 frame.add(button); / 设置尺寸 frame.setSize(200, 100); / JFrame在屏幕居

14、中 frame.setLocationRelativeTo(null); / JFrame关闭时的操作 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 显示JFrame frame.setVisible(true); 运行程序,会显示上图所示窗口.调整窗口的大小,按钮都是显示在窗口的中央,并且占满整个框架.这是因为组件(本例就是按钮)是被布局管理器放到框架中的.默认布局管理器就是将按钮放到中央.备注: 可以通过f.setVisible(false); 隐藏窗体f.dispose();关闭窗口 设置图片: setIconImage(

15、Toolkit.getDefaultToolkit().createImage(png-0015.png);6. JoptionPane对话框显示一个带有OK按钮的模态对话框。下面是几个使用showMessageDialog的例子:Java代码JOptionPane.showMessageDialog(null, 错误信息提示, 标题, JOptionPane.INFORMATION_MESSAGE);效果如下:Java代码1. JOptionPane.showMessageDialog(jPanel,提示消息,标题,JOptionPane.WARNING_MESSAGE);效果如下:Java

16、代码1. JOptionPane.showMessageDialog(null,提示消息.,标题,JOptionPane.ERROR_MESSAGE);Java代码1. JOptionPane.showMessageDialog(null,提示消息.,标题,JOptionPane.PLAIN_MESSAGE);1.2 showOptionDialog这个函数可以改变显示在按钮上的文字。你还可以执行更多的个性化操作。常规的消息框:Java代码1. intn=JOptionPane.showConfirmDialog(null,你高兴吗?,标题,JOptionPane.YES_NO_OPTION)

17、;/i=0/1效果如下:输入框 :String inputValue = JOptionPane.showInputDialog(请输入你给我金额);7. 面板(Panel)面板也是一个容器的组件,可以在上面添加注意:面板不能单独使用,必须在顶层窗口中使用。8. 常见组件一些常用的组件例如: JLabel,JButton ,JTextFieldJPassworldFieldJRadioButtonJCheckBoxJTextAreaJListJMenuBarJMenuJMenultem8.1. Button按钮Java中的Swing提供了常规按钮,单选按钮,复选按钮和菜单按钮8.1.1. JB

18、uttion普通按钮按钮Button是点击时触发动作事件的组件.8.1.2. JRadioButton单选按钮单选按钮,可以让用户从一组选项中选择一个单一条目.例如性别.使用单选按钮时注意将,单选按钮放在一组,需要使用java.swing.ButtonGroup. 的add方法,添加到一个组中,位于同一个组的单选按钮就是互斥的. 如果没有将单选按钮放在一个组中,就是独立的.我们让然需要把按钮添加在容器中.因为ButtonGroup添加到容器中.8.1.3. JCheckBox复选框多选8.2. JLabel标签8.3. JTextField文本域8.4. JTextArea文本区域8.5. J

19、ComboBox组合框8.6. JList 列表框例如: String data = one, two, three ; JList list = new JList(data); p1.add(list);8.7. JmenuBar菜单条JMenu菜单JMenultem菜单项菜单条(MenuBar)中包含菜单(Menu),菜单中中包含菜单项(MenuItem)注意添加的顺序。例如:记事本的菜单条中包含文件、编辑、格式、查看、帮助菜单。其中文件菜单中包含新建、打开、保存、另存为等菜单项案例综合。public class CommonComponent extends JFrame public

20、 CommonComponent() / 面板 JPanel p1 = new JPanel(); add(p1); / 标签 JLabel name = new JLabel(用户名:); p1.add(name); / 文本域 JTextField field = new JTextField(8); p1.add(field); / 标签 JLabel passwd = new JLabel(密码); p1.add(passwd); / 密码域 JPasswordField pass = new JPasswordField(8); p1.add(pass); / 单选按钮 JLabel

21、 gender = new JLabel(性别); p1.add(gender); JRadioButton male = new JRadioButton(男); JRadioButton female = new JRadioButton(女); / 单选按钮组,同一个单选按钮组的互斥. ButtonGroup group = new ButtonGroup(); group.add(male); group.add(female); / 注意,单选按钮组不能添加进容器 p1.add(male); p1.add(female); / 复选框 JLabel like = new JLabel

22、(爱好:); p1.add(like); JCheckBox eat = new JCheckBox(吃饭); JCheckBox movie = new JCheckBox(看电影); JCheckBox sleep = new JCheckBox(睡觉); p1.add(eat); p1.add(movie); p1.add(sleep); / 文本域 JLabel info = new JLabel(个人简介); p1.add(info); JTextArea area = new JTextArea(20, 20); p1.add(area); / 列表 String data = o

23、ne, two, three ; JList list = new JList(data); p1.add(list); / 普通按钮 JButton button = new JButton(注册); p1.add(button); / 菜单条 JMenuBar bar = new JMenuBar(); / 菜单 JMenu menu = new JMenu(文件); / 菜单选项 JMenuItem myNew = new JMenuItem(新建); JMenuItem myOpen = new JMenuItem(打开); bar.add(menu); menu.add(myNew)

24、; menu.add(myOpen); add(bar, BorderLayout.NORTH); public static void main(String args) CommonComponent frame = new CommonComponent(); frame.setTitle(常用组件); frame.setSize(400, 400); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 自适应 frame.pack(); frame.setV

25、isible(true); 样式如下:因为面板默认是流式布局.9. 布局管理器Java的GUI组件都放置在容器中,他们的位置是由容器的布局管理器来管理的.在前面的程序中,并没有指定将OK按钮放置在框架的什么位置,但是,Java知道应该把它放置在哪里,因为在后台工作的布局管理器能够将组件放到正确的位置.布局管理器是使用布局管理器类创建的.我们可以使用setLayout() 方法在容器中设置布局管理器.我们将要了解FlowLayout GridLayout BorderLayout9.1. FlowLayout流式布局FlowLayout(流式布局)是最简单布局管理器. Jpanel容器默认的布局

26、管理器 流式布局,按照组件添加的顺序,从左到到右将组件排列在容器中.当放满一行,就开始新的一行.在FlowLayout有3个常量FlowLayout可以指定组件的对齐方式.LEFT 每一行组件都应该是左对齐的RIGHT 每一行组件都应该是右对齐的CENTER 每一行组件都应该是居中的还可以指定组件之间的以像素为单位的间隔.int getHgap() 获取组件之间以及组件与 Container 的边之间的水平间隙。 int getVgap() 获取组件之间以及组件与 Container 的边之间的垂直间隙。void setHgap(int hgap) 设置组件之间以及组件与 Container

27、的边之间的水平间隙。 void setVgap(int vgap) 设置组件之间以及组件与 Container 的边之间的垂直间隙。这个布局管理器的对其方式默认值是CENTER 这个布局管理器的水平间隔默认值是 5个像素这个布局管理器的垂直间隔默认是是5个像素创建该布局管理器FlowLayout() 构造一个新的 FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。FlowLayout(int align) 构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位。FlowLayout(int align, int hgap, int

28、vgap) 创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。案例:创建框架,使用流失布局管理器.向该框架添加三个标签和文本域.public class ShowFlowLayout extends JFrame public ShowFlowLayout() super.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20); add(new JLabel(姓名:); add(new JTextField(8); add(new JLabel(邮箱:); add(new JTextField(8); add(new JLabe

29、l(电话:); add(new JTextField(8); public static void main(String args) ShowFlowLayout frame = new ShowFlowLayout(); frame.setTitle(FlowLayout); frame.setSize(500, 200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); 该案例在本类main方法中创建了一个本类对象. 该类的构造函数中创建并且添加组件.该案例使用了FlowLayout管理器在框架放置组件.如果改变框架的大小.组建会自动的重新排列,以适应框架.例如:如果将同一个按钮在框架中添加10次,那么该框架只会出现一次,将一个按钮向容器中添加多以和一次是一样的.9.2. GridLayout网格布局GridLyaout是以网格形式管理组件的.组件按照他们添加的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1