Java界面设计经典
java实验5图形用户界面设计试验
java实验5图形⽤户界⾯设计试验常⽤布局1)、流布局: FlowLayout 从左到右,⾃上⽽下⽅式在容器中排列,控件的⼤⼩不会随容器⼤⼩变化.容器.setLayout(new FlowLayout(FlowLayout.LEFT));2)、⽹格布局: GridLayout 按照指定⾏数与列数,将容器分成⼤⼩相等的单元格每个单元格放置⼀个控件. 不能将控件放在指定单元格 容器.setLayout(new GridLayout(3,4,10,15));3)、边界布局: BorderLayout 将容器分成东、西、南、北、中五个部分 容器.setLayout(new BorderLayout()); 窗⼝的内容⾯板默认布局就是边界布局。
容器.add(控件,BorderLayout.NORTH);4)、混合布局: 使⽤JPanel,将多个布局组合在⼀起使⽤5)、绝对布局 null: 以坐标定位 容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height); btn.setBounds(10,100,30,60);常⽤事件1)、事件源 EventSource:能够触发事件控件如:JButton,JTextField,JFrame,JComboBox,....2)、事件 Event:ActionEvent,KeyEvent,WindowEvent,TextEvent,...3)、事件侦听者Listener(接⼝) ActionListener,WindowListener,...class A implements ActionListener{public void actionPerformed(ActionEvent e){....}}A lis=new A();4)、事件处理函数public void actionPerformed(ActionEvent e){....}事件流程:事件源触发事件-->事件源侦听者接收事件-->⾃动调⽤相应事件处理函数.实践编程1.在应⽤程序窗体中安排1个⽂本框,⼀个标签。
Java17第十四章2-界面设计swing
JPopupMenu:弹出式菜单组件
安卓越科技(北京)有限公司
18
import java.awt.Color; import javax.swing.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class PopupMenuTest { static JPopupMenu popup=null; public static void main(String[] args) { JFrame frame = new JFrame(); frame.setBounds(200,300,200, 300); frame.setTitle("我的第一个小板凳"); //设置不允许调整窗口的大小 frame.setResizable(false); frame.setBackground(Color.ORANGE); popup = new JPopupMenu(); popup.add("徐明华"); popup.add("张燕君"); popup.add("徐诗佳"); popup.add("王子昊"); popup.setName("右击菜单"); frame.add(popup);//在窗体上加右击菜单 frame.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if(e.getButton() == MouseEvent.BUTTON3){ popup.show(e.getComponent(), e.getX(), e.getY()); } } });//添加事件监听器 frame.setVisible(true);//显示窗体}}
Java图形用户界面设计
13
(3) 事件监听器(Listener) 事件处理机制中的核心部分,主要的功能大致可以分为 两部分:第一,监听组件,观察组件有没有发生某类事 件;第二,如果监听的组件发生了某类事件,则调用对 应的动作处理方法立刻处理这个事件。 在Java事件处理机制中,监听器处于主体地位。与事件 分类对应,监听器也相应的分成若干种类型,例如,鼠 标事件对应鼠标监听器,键盘事件对应键盘监听器,窗 口事件对应窗口监听器等。
25
5.3.2 AWT组件库常用组件举例 【问题1】 在窗口f中,有一个文本框tf,三个按钮btn_1、 btn_2、btn_3。当使用鼠标点击btn_1时,文本框显示 btn_1按钮被点击,当使用鼠标点击btn_2按钮时,文本框 显示btn_2按钮被点击,当使用鼠标点击btn_3按钮或者窗 口f的关闭按钮时,窗口关闭,程序退出。
(4) Choice Choice表示下拉选择框组件,选择框中的每一个选项称 为一个Item,Item的类型一般为String字符串。 (5) Label Label表示标签组件,主要作用在于创建提示性的文本。
23
(6) MenuBar、Menu和MenuItem MenuBar表示菜单条组件,该组件由Menu菜单构成,而 Menu菜单又可由Menu菜单和MenuItem菜单项构成。 (7) TextField TextField表示文本框组件,与文本域组件不同的是, 文本框中只能有一行文本。 (8) TextArea TextArea表示文本域组件,可以容纳多行文本。
30
(3) JRadioButton和ButtonGroup 在Swing中与Checkbox对应的是JCheckBox,实际使用时, 如果需要创建单选框组的话,经常使用的是 JRadioButton而非JCheckBox。如果将多个JRadioButton 组件放在一个ButtonGroup中时,这些JRadioButton组件 将不再具有复选功能,而是只具有单选功能,也即变成 单选框。 (4) JComboBox JcomboBox对应于AWT中的Choice,表示下拉选择框组件, 选择框中的每一个选项称为一个Item,Item的类型一般 为String字符串,也可以是指定的泛型类型。
Java语言程序设计:第十章 Java图形用户界面
t}ryesflrs{eaetmD{teer.fypaau{cltkC(l)o; seOperation(EXIT_ON_CLOSE);
选中“ToGoelnUyke}DsiItrMt.caiegmtjefaebreamxtaeIcHtncnmDnLheeaistoea}ep((gidf)oE.ctae;veinkxoaurarAc单.ntcllsstcieo.dTnc击ephmpoardrtetmotLi(i“FneoeEleokte(nnFnS)xoieiSttl”ec(te;kla)}iC”exzA.cgceplkneaetT=dtipsoS“rFtsanicoSNecrnaeeeav)(exlem(){nc;ASeellp”(iz)t)ei保;o()n存;)源{ 文U件I和M工an程a文g件er.getS
边
有间距
CENTER
的 East
组 容se器tHgap(int hgap)
件
setVgap(int vgap)
组
将组件间的水平间距设置为指定的值
件
将组件间的垂直间距设置为指定的值
下边的组件
South
天津职业技术师范大学
BorderLayout
…… class testFrame extends JFrame {
天津职业技术师范大学
BorderLayout
North
左
边 West 的
组 容器
件
上边的组件 CENTER
下边的组件
South
右 边 的 East 组 件
天津职业技术师范大学
BorderLayout
North
方法
左 BorderLay边out( )
West 的
Java的GUI设计打造美观直观的用户界面
Java的GUI设计打造美观直观的用户界面Java是一种广泛使用的编程语言,拥有着强大的图形用户界面(GUI)设计能力。
通过使用Java提供的各种GUI库和工具,开发人员可以轻松地创建美观、直观的用户界面。
本文将介绍一些在Java中实现这样的GUI设计的方法和技巧。
一、选择合适的GUI库在Java中,有多个GUI库可供选择,比如Swing、JavaFX等。
选择合适的GUI库是设计美观直观界面的第一步。
Swing是一个成熟的GUI库,提供了丰富的组件和布局管理器,可以满足大部分GUI设计需求。
JavaFX是Java官方推荐的GUI库,它提供了更现代化的界面设计风格和更优秀的性能。
二、使用布局管理器布局管理器是GUI设计中重要的一环,它定义了组件在窗口中的位置和大小。
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout等。
通过合理选择和组合这些布局管理器,可以实现各种复杂的界面布局。
三、使用合适的图标和图片图标和图片在GUI设计中起着很重要的作用,可以通过它们来提升用户界面的美观性和直观性。
Java提供了处理图标和图片的功能和类库,开发人员可以使用这些功能来加载、处理和显示各种图标和图片。
四、使用合适的颜色和字体颜色和字体也是GUI设计中非常重要的元素,可以用来强调界面的重要信息或者创建特定的视觉效果。
Java提供了各种颜色和字体的类库和功能,可以用来选择合适的颜色和字体样式。
五、增加交互性一个好的用户界面应该具有良好的交互性,能够方便用户进行操作。
Java提供了丰富的事件处理机制和监听器,可以实现交互性功能。
开发人员可以通过监听用户的操作,及时响应并更新界面,实现更好的用户体验。
六、进行界面美化除了以上的基本设计原则,开发人员还可以通过一些额外的技巧来进一步美化用户界面。
比如使用渐变色背景、添加阴影效果、使用动画效果等。
这些技巧可以使界面更加生动、有趣,并提升用户的整体体验。
Java程序设计:第八章 Swing图形界面程序设计
原型 public FlowLayout(int align )
描述
FlowLayerout布局时,组件在容器以从左到右,从 上到下的方式排列。 align用于指定行对齐方式, FlowLayout.LEFT表示左 对齐,相应的有右对齐和居中对齐。
java.awt.Container的成员JLabel(2)
JFrame的成员方法
原型
public JFrame( ) public JFrame(String title) public void setDefaultCloseOperation( int operation) public void setSize(int width, int height) public void setVisible(boolean b) public Container getContentPane()
描述 构造一个无标题不可见的框架 构造一个标题为title的框架 设置当关闭框架时的操作,例如operation为 JFrame.EXIT_ON_CLOSE时表示退出程序
设置框架的大小
设置框架是否可见 返回当前框架的内容窗格
7
组件和容器 -JFrame和JLabel(3)
FlowLayout布局的成员方法:
4
组件和容器(3)
一般容器包括: 面板JPanel,滚动窗格JScrollPane,选项卡 窗格JTabbedPane和工具栏JToolBar。
专用容器包括:内部框架(JInternalFrame),分层窗格 (JLayedPane)、根窗格(JRootPane)、玻璃窗格(GlassPane )、内 容窗格(ContentPane)。
描述 构造一个父窗口为owner,标题为title,模式为 modal的对话框。Modal为true表示有模式,为false 表示无模式 设置对话框的大小
Java程序设计教程P3-1-5信息查询界面
相关知识与技术
二、BorderLayout:边界式布局 例如,一个使用BorderLayout布局的容器con,可以使用add方法 将一个组件b添加到中心区域: con.add(b,BorderLayout.CENTER); 或 con.add(BorderLayout.CENTER,b); 添加到某个区域的组件将占据整个区域。每个区域只能放置一个 组件,如果向某个已放置了组件的区域再放置一个组件,那么先 前的组件将被后者替换掉。使用BorderLayout布局的容器最多能 添加5个组件,如果容器中需要加入超过5个组件,就必须使用容 器的嵌套或改用其他的布局策略。
相关知识与技术
一、FlowLayout:流式布局
2、常用函数:
(1)public (2)public
void setAlignment(int align) 设置布局的对齐方式。 void setHgap(int hgap) 设置布 局的水平间隙。
(3)public
void setVgap(int vgap) 设置布 局的垂直间隙。
相关知识与技术 8.4 容器
一、面板
1、Panel类
Panel类是Container(容器)类的子类,通过Panel 类创建的对象称为面板。 Panel型容器的默认布局是FlowLayout型布局。 经常在一个面板中添加若干个组件后,再把面板放 到另一个容器中。
相关知识与技术
二、ScrollPane类
常用方法:
事件:
相关知识与技术 八、表格JTable 表格组件以行和列的形式显示数据,允许对表格中的数 据进行编辑。 构造方法: JTable():创建默认模型表格。 JTable(int a,int b):创建a行b列的默认模型表格。 JTable(Object data[][],Object columnName[]): 创建默认模型表格对象,并且显示由data指定的二 维数组的值,其列名由数组columnName指定。
Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理
《Java面向对象程序设计案例教程》
7.2 Swing基础
• Swing组件是Java语言提供的第二代GUI设计工 具包,它以AWT为基础,在AWT内容的基础上 新增或改进了一些GUI组件,使得GUI程序功能 更强大,设计更容易、更方便。
• Swing与AWT有以下不同。
• (1) Swing是完全用Java语言编写的,所以称 Swing组件是轻量级组件,没有本地代码,不依 赖操作系统的支持,比AWT构件具有更强的实 用性。Swing在不同的平台表现一致,并且有能 力提供本地窗口系统不支持的其他特性。
《Java面向对象程序设计案例教程》 • Swing的类层次结构如图所示:
《Java面向对象程序设计案例教程》
• 3. 简单的范例 • 一个简单的Swing GUI应用程序。该程序生成一个窗
口, • 窗口中有一个标签,用于显示输出。 • (1) 程序代码: • 1. import java.awt.* ; • 2. import javax.swing.* ; • 3. public class SwingDemo • 4. { • 5. public static void main(String args[]) • 6. { • 7. JFrame fm = new JFrame("第一个Windows程序") ; • 8. JLabel label = new JLabel("这是第一个GUI程序") ;
• 教材例题7-12 利用组合框显示、选取地名。
• 教材例题8.2 ,例题8.3用不同方法生成JFrame窗口
《Java面向对象程序设计案例教程》
• 7.3.2 面板容器JPanel
• 面板JPanel也是Java中常用到的容器之一,面板是一种透明 的容器,既没有标题,也没有边框,就像一块透明的玻璃。 与JFrame不同,它不能作为最外层的容器单独存在,它首 先必须作为一个构件放置到其他容器中,然后再把它作为容 器,把其他构件放到其中。
最让你惊艳的java代码
最让你惊艳的Java代码Java作为一种广泛应用于软件开发领域的编程语言,具备强大的跨平台特性、丰富的类库和稳定的性能。
在众多的Java代码中,总有一些令人惊艳的代码片段,无论是其巧妙的设计、高效的算法还是优雅的实现方式,都让人印象深刻。
本文将介绍一些我认为最让人惊艳的Java代码,并对其进行详细解析。
1. 快速排序算法public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivot = partition(arr, low, high);quickSort(arr, low, pivot - 1);quickSort(arr, pivot + 1, high);}}public static int partition(int[] arr, int low, int high) {int pivot = arr[low];while (low < high) {while (low < high && arr[high] >= pivot) {high--;}arr[low] = arr[high];while (low < high && arr[low] <= pivot) {low++;}arr[high] = arr[low];}arr[low] = pivot;return low;}快速排序算法是一种高效的排序算法,其核心思想是通过递归地将数组划分为两部分,一部分小于基准值,一部分大于基准值,然后对这两部分继续进行排序,直到整个数组有序。
这段代码实现了快速排序算法,通过递归调用quickSort方法和partition方法实现了数组的划分和排序。
这段代码令人惊艳的地方在于其简洁而高效的实现方式。
通过选择一个基准值,将数组划分为两部分,并通过交换元素的方式实现排序,避免了显式创建新的数组,减少了额外的空间开销。
Java图形用户界面ppt课件
18
1.4 布局管理器-FlowLayout
1. FlowLayout
FlowLayout 是Panel,Applet的缺省布局管理器。其组件的放 置规律是从上到下、从左到右进行放置,如果容器足够宽,第一 个组件先添加到容器中第一行的最左边,后续的组件依次添加到 上一个组件的右边,如果当前行已放置不下该组件,则放置到下 一行的最左边。
11
1.2 组件和容器
容器(Container)也是一个类,实际上是Component的 子类,因此容器本身也是一个组件,具有组件的所有 性质,但是它的主要功能是容纳其它组件和容器。
布局管理器(LayoutManager):每个容器都有一个布 局管理器,当容器需要对某个组件进行定位或判断其 大小尺寸时,就会调用其对应的布局管理器。
Java图形用户界面
Java界面设计的用途
Java 的图形界面工具包,可以用于工具类软 件开发、管理类软件开发、通用客户端开发 、银行客户端软件开发、Eclipse 插件开发等 方向。在许多知名的大型软件中,都能够见 到 Java 的身影,如思维导图软件、Eclipse、 IDEA 开发环境等。
5
如何选择 GUI 工具包
AWT、Swing、SWT是 Java 中的三大 GUI 工具包,其中 Swing 是最灵活、 强大的 GUI 工具包,所以在界面开发 中,首选 Swing ,它可以胜任绝大多 数开发工作。
6
本讲内容
1、AWT事件处理模型 2、布局管理器 3、Swing简介 4、Swing组件和容器
为了使我们生成的图形用户界面具有良好的平台无关 性,Java语言中,提供了布局管理器这个工具来管理 组件在容器中的布局,而不使用直接设置组件位置和 大小的方式。
Java程序设计GUI 图形用户界面PPT 课件,Java学习和备课必备资料
7
9.1 Swing 简介
9.1.1 窗体组件 JFrame 9.1.2 对话框组件 JDialog 9.1.3 对话框组件 JOptionPane 9.1.4 中间容器 JPanel 与 JscrollPane 9.1.5 标签组件 JLabel 9.1.6 文本组件 JTextField 与JTextArea
5
✓Swing包在图形界面设计上比AWT更丰富,更美观。Swing 拥有4倍于AWT的用户界面组件。 ✓是AWT包基础上的扩展,在很多情况下在AWT包的部件前 加上字母J即为Swing组件的名称,如:JFrame、JApplet、 JButton等。 ✓Swing组件都是AWT的Container类的直接子类或间接子类 。
17
9.1.3 对话框组件 JOptionPane
使用上面介绍的 JDialog 可以制作消息提示对话框、确定取消对话框等常用的对话框,但相 对来说要花费一些心思才能做出来,而 JOptionPane 组件直接提供了创建上述几种常用的对 话框的方法,大大方便了编程。 1.showMessageDialog()的静态方法弹出消息对话框,显示一条消息并等待用户确定。常用 的重载方法如下。
4、设置窗体的位置。setLocationRelativeTo(Component c):设置 窗体的相对位置。如果参数为 null,则窗体在屏幕中居中对齐。
5、如果希望在关闭窗体后程序可以随之停止,需要调用方法 setDefaultClose Operation()并传入参数 JFrame.EXIT_ON_CLOSE, 这句代码设置了关闭窗体后会停止程序的运行。 此外还有其他 3 个参数,简述如下。
口");。 2)带参的构造方法:用一个字符串作为参数,此字符串将成为窗体的标题。
图形用户界面设计
中间容器(Jpanel)
1. 将组件添加到JFrame中 2. JPanel的使用
30
1、 将组件添加到JFrame中
方式之一: frame.getContentPane().add(childCom
ponent) 用getContentPane()方法获得JFrame的
内容面板,再对其加入组件,一般只使 用该方式添加组件。
Swing 是为了解决 AWT 存在的问题而 新开发的包,它以 AWT 为基础的。
10
上图列举了AWT和 Swing的关系,也可 以看出Swing是继承自AWT的。主要利 用Swing来设计图形化界面程序。
11
图形化界面设计—容器
1. Java基本类(JFC) 2. AWT和Swing的区别 3. Swing基本框架 4. 图形化设计步骤 5. 组件容器的使用
54
实例:
55
实例:
56
实例二:在中间位置中添加9个按钮
57
58
布局管理器之GRIDLAYOUT(网 格布局)
59
网格布局特点:
使容器中的各组件呈M行×N列的网格状分布。 网格每列宽度相同,等于容器的宽度除以网格
的列数。 网格每行高度相同,等于容器的高度除以网格
的行数。 各组件的排列方式为:从上到下,从左到右。 组件放入容器的次序决定了它在容器中的位置。 l容器大小改变时,组件的相对位置不变,大小
图形用户界面设计
1
Java图形化界面设计——容器 (JFrame)
2
程序是为了方便用户使用的,因此实现 图形化界面的程序编写是所有编程语言 发展的必然趋势,在命令提示符下运行 的程序可以让我们了解java程序的基本 知识体系结构,现在就进入java图形化 界面编程。
JAVA实验-图形界面设计甄选
JAVA实验-图形界面设计广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室2014年11月14日一、实验目的实验十图形用户界面(1)1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。
实验十一图形用户界面(2)1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。
二、实验器材MacBook Pro一台操作系统:OS X Yosemite编程软件:eclipse三、实验要求实验十图形用户界面(1)1. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。
2. 掌握编写独立运行的窗口界面的方法。
3. 了解Java Swing 组件的使用方法。
4. 了解对话框的使用方法。
实验十一图形用户界面(2)1. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。
2. 掌握编写独立运行的窗口界面的方法。
3. 了解Java Swing 组件的使用方法。
4. 了解对话框的使用方法。
四、实验过程原始数据记录实验十图形用户界面(1)1. 如下图所示,用了三个文本框,第一个文本框给用户输入商品单价,第二个则是给用户输入商品数量,第三个用于显示总金额。
代码:import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextField;import javax.swing.SwingConstants;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;import javax.swing.text.BadLocationException;import javax.swing.text.Document;public class test_2_1_1 extends JFrame implements ActionListener{public static void main(String[] args) {// TODO Auto-generated method stubtest_2_1_1 good = new test_2_1_1();}JTextField goodPriceTF;JTextField goodNumTF;JTextField sumPriceTF;JLabel goodPriceTipsLabel;JLabel goodNumTipsLabel;Boolean canCal = false;public test_2_1_1(){super("商品价格计算器");setSize(435, 135);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置JFrame是否可以改变大小。
Java程序设计图形用户界面ppt课件
▪ AWT中最灵活、最复杂的布局管理器,各组件所占空 间可以不相同且灵活规定,参见参考书及API文档;
.
17
第10章 图形用户界面
容器的嵌套使用举例
范例:NestedContainer.java
.
18
第10章 图形用户界面
默认布局管理器
Component Container
些空的方法体。
.
27
第10章 图形用户界面
10.3.4 内部类及匿名类在事件处 理中的应用
在Java事件处理程序中,由于与事件相关的事件 监听器的类经常局限于一个类的内部,所以经常 使用内部类。而且定义的内部类在事件处理中的 使用就实例化一次(在其他地方不会用到该类,所 以不需要类名),所以经常使用匿名类。
.
25
第10章 图形用户界面
10.3.2 事件监听器的注册
注册事件监听器只需要使用组件对象的 addXXXXEvent方法,它可以指明该对象感兴趣的 事件监听器(即实现了某个AWTEventListener子 接口的对象)。这样,当事件源发生了某种类型 的事件时,则触发事先已注册过的监听器中相应 的处理程序。
Window
Frame
Dialog
Panel Applet
BorderLayout
FlowLayout
.
19
第10章 图形用户界面
布局管理器总结(1)
▪ Frame
Frame是一个顶级窗口。 Frame的缺省布局管理器为BorderLayout。
▪ Panel
Panel无法单独显示,必须添加到某个容器中。 Panel的缺省布局管理器为FlowLayout。 当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以
JAVA图形用户界面的设计与实现PPT课件
Applet Frame Dialog FileDialog
容器
组件名
26
Component 类的常用方法 public void add (PopupMenu popup):在组件上加上一个弹出菜单。 public Color getBackground ( ): 获得组件的背景色。 public Font getFont ( ):获得组件使用的字体。 public Color getForeground ( ):获得组件的前景色。 public Graphics getGraphics( ):获得绘图用的 Graphics 对象。 public void repaint ( int x, int y, int width, int height ):以指点的坐标点
只能用做容器组件加入其他容器。 3)通常用于层次化界面组件管理。
P260:例 7-20 TestPanel . java
❖ 例子:ch7\src\MyFrame.java
6
组件
组件:图形用户界面的最小单元,用来完成与用户的交互;
用户界面标准化的结果,例如:标签、文本框、按钮、菜单 等。
使用组件的步骤: 1)创建组件类的对象,指定其属性; 2)使用某种布局策略; 3)将组件对象注册给对应的事件监听器,覆盖事件处理方
Java 支持的图像文件格式包括bmp,gif,jpeg 等。
16
二、绘制图像:
drawImage( Image img, int x, int y, ImageObserver observer ) 有4个 参数:图像的 Image 对象,显示图像的左 上角 x、y 坐标,显示图像的容器对象。如:
来接收和处理这种事件。 ❖ 如果一个事件源注册了对应的监听者,那么
Java图形化界面编程介绍
Java图形化界⾯编程介绍⽬录1.内容概述2.容器Container2.1Window2.2Panel2.3ScrollPane2.4Box3.布局管理器3.1FlowLayout3.2BorderLayout3.3GridLayout3.4Cardlayout4.AWT基本组件5.事件处理6.开发⼀个简单计算器1.内容概述 先谈谈个⼈对图形化界⾯编程的认识,图形化界⾯编程可以直接的看到每⼀步操作带来的效果,相对于传统编程盯着⿊框框学起来是⾮常⾮常有意思的。
再谈谈最后的效果,界⾯是由窗⼝和组件构成的。
⽽组件在窗⼝内的排列并不是没有章法可⾔,依赖于布局管理器使组件以合适的位置以及合理的排布呈现。
排布于窗⼝内的组件⼜可以通过事件监听器与⽤户进⾏交互…2.容器Container 什么是容器?容器是特殊的组件。
容器是⽤来装东西的,不仅可以存放组件,也可以⽤来存放容器,⽽存放的容器⼜可以存放容器或组件。
听起来有点反复套娃,但学起来还是很容易的!2.1Window Window是可以独⽴存在的顶级窗⼝,其默认使⽤BorderLayout布局管理器。
frame.setLocation(500,300)⽅法⽤来设置窗⼝的位置,通常计算机的远点坐标在左上⾓。
frame.setSize(500,300)⽅法⽤来设置窗⼝的尺⼨。
frame.setVisible(true)设置窗⼝是否可见。
运⾏效果(使⽤Frame来创建⼀个窗⼝): 注意此时的窗⼝不能通过单击右上⾓的’X’关闭窗⼝,只能⼿动结束程序,因为还没有加⼊事件监听机制。
代码:import java.awt.*;public class WindowDemo {public static void main(String[] args) {//创建⼀个窗⼝对象Frame frame = new Frame("测试Window窗⼝");//指定窗⼝的位置和⼤⼩frame.setLocation(500,300);frame.setSize(500,300);//设置窗⼝可见frame.setVisible(true);}}2.2Panel Panel是内嵌式容器,必须内嵌于其它容器中使⽤,不能独⽴存在。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用AWT
Graphics类 Graphics类是所有用来在组件上进行图形绘制时所使 用的图形环境上下文的父类,它提供了对组件进行图形 绘制的一般方法的接口,一个Graphics对象中封装了用来 进行图形绘制时必须得状态信息,包括: 要绘制的组件对象 当前颜色 当前字体 当前逻辑点操作的功能(XOR和Paint) 当前XOR方式的替代颜色 ……
通过图形用户界面(Graphical User Interface,GUI), 用户和程序之间可以方便友好地进行交互。在Java语言中, Java的基础类(Java Foundation Classed,JFC)是开发GUI 的API集,它包括以下几个部分: 抽象窗口工具包(AWT):Java开发用户界面最初的 工具包,是建立JFC的主要基础; 2D API:实现高质量的二维图形; Swing组件:建立在AWT之上,新的、功能更强大的图 形组件包; 可访问API:支持残疾用户的交互; ……
组件容器
一个Java的图形用户界面的最基本组成部分就是组件 (Component),组件是一个可以以图形化的方式显示在 屏幕上并能与用户进行交互的对象,比如Button, Checkbox, Choice, Label, List等。 组件不能独立地显示出来,必须将组件放在特定的对象 中才能显示出来,这就是包含组件的组件——Container (容器)。容器Container是Component的子类,它本身也 是一个组件,具有组件所有的性质。另外,它还具有容纳 其他组件和容器的功能。
组件容器
框架(Frame)
Frame是一个顶级窗口,通常是应用程序的骨架。Frame中的退出按钮 被点击后,将产生一个WindowEvent事件,表示关闭Frame,可以在Frame 中实现WindowListener接口以监听WindowEvent事件。Frame中无法直接 监听键盘事件,但可以往Frame中添加画布、面板凳组件,t包中包含了一个完整的类集以支持GUI程序的 设计,其中的类及相互关系可以用下图来描述: ng.Object 事件类 字体类 Button Checkbox Graphics 颜色类 图象类 菜单类
Component List … Window Frame
布局管理类 Container Panel Applet Dialog
}
public class MyPanelInFrame extends Frame { public MyPanelInFrame(String str) { super(str); addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public static void main(String args[]) { MyPanelInFrame fr = new MyPanelInFrame("Panel in Frame"); Panel pan = new Panel(); fr.setSize(500,500); fr.setBackground(Color.green); fr.setLayout(null); pan.setSize(200,200); pan.setBackground(Color.yellow); pan.setLocation(100,100); Button b1 = new Button("Help"); Button b2 = new Button("Test"); pan.add(b1); pan.add(b2); fr.add(pan); fr.setVisible(true);
Demo:Dialog
import java.awt.*; public class myFrame extends Frame { public static void main(String args[]) { myFrame fr = new myFrame("Frame Test"); fr.setSize(400,300); fr.setBackground(Color.white); fr.setVisible(true); fr.showDialog(); } public myFrame(String s){super(s);} public void showDialog() { Dialog fd = new Dialog(this, "Dialog Test",true); fd.setSize(100,100); fd.setBackground(Color.red); fd.setVisible(true); } }
使用AWT
Component类 java.awt包中最核心的类就是Component类,它是构成 Java图形用户界面的基础,大部分组件都是由该类派生出 来的。 Component类是一个抽象类,其中定义了组件所具 有的一般功能:基本的绘画支持(paint, repaint, update等)、 字体和颜色等外形控制(setFont, SetForeground等)、大小 和位置控制(SetSize, SetLocation等)、图象处理(实现接口 ImageObserver)以及组件状态控制(SetEnable, isEnable, isVisible, isValid等) ,……。 常见的组件包括:Button, Checkbox, CheckboxGroup, Choice, Label, List, Canvas, TextComponent, Scrollbar等。
使用AWT
事件类:描述各种事件的类,包括AWTEvent类及其子 类、Event类。 字体类:用来表示字体的类,通过它可以在GUI中使用 多种系统支持的字体。 图象类:用来表示与处理图象的类(GIF、JEPG)。 颜色类:封装了各种颜色。 其他类:光标类、各种几何类等 ……
使用AWT
组件及其对等类(peers) java.awt.peer中有全部awt组件的对等对象的集合,每个 对象都提供了机器相关基本的方法,awt中的组件使用这些 方法来实现机器和操作系统无关的GUI。
使用AWT
使用AWT
菜单类 菜单类也是一种组件,只不过菜单类并不是由一般的 Component类派生的,而是从MenuComponent类继承 得到的。
使用AWT
Container类 Container类是由Component类派生出来的一种特殊 类,用来表示各种GUI组件的容器,其主要功能包括: 组件的管理:方法add()可以向其中添加一个组件, remove()删除其中的一个组件,… 布局管理:每个Container类都和一个布局管理器相 联,以确定其中组件的布局。 Container类可以通过 setLayout()方法设置某种布局方式。 常见的Container类有:Frame,Dialog,Panel, Applet等。
面板(Panel)
面板可以处理事件,但象画布一样,一定要先获得输入焦点。
对话框(Dialog)
对话框与Frame相类似,一般用于接收用户的输入数据,实现与用户的交互。它 与一般窗口的区别在于它依赖其他的窗口。对话框分有模式和无模式两种,前者只 让应用程序响应对话框内部事件,后者则可以响应对话框以外的事件,可以通过其 构造方法来设置对话框是否有模式: Dialog( Parent, Title, isModal ) //父窗口,标题,是否有模式
组件容器
列表
按钮
菜单
窗口,对话框 另一个窗口
Container Container
组件容器 Component Container Button List Textfield Checkbox Panel Applet Window Frame Dialog FileDialog
组件容器
AWT使用Container类来定义最基本的组件容器,它有 两个常用的子类:Window类和Panel类。 Window类还有两个子类: 定义对话框,用Dialog子类。Java还提了一个Dialog 的子类——FileDialog,用它生成文件对话框。 定义一般意义的窗口,用Frame类。 Frame可以用其构造方法Fame(String)来生成,其标题由 String参数指定。一个Frame刚被创建后,其初始大小为 (0,0),而且是不可见的,所以为了使Frame显示出来, 必须在程序中显式地设置一下它的大小。
使用AWT
布局管理器类 Java中提供了各种布局管理器类来管理各种组件在容器 中的放置状态,这些类都是实现了LayoutManager接口的。 标准的布局管理器类有: FlowLayout BorderLayout GridLayout CardLayout GridBagLayout 还可以通过实现LayoutManager接口来定义自己的布局 管理器。
组件容器 用户可以从具体的容器中继承来创建自己的 容器,以构造一些个性化的窗口。一般用户通 常要构造一些适合自己需要的对话框,此时, 可以从Dialog中继承。
public class MyFrame extends Frame { public static void main(String args[]) { MyFrame fr = new MyFrame("Frame and FileDialog Test"); fr.setSize(500,500); fr.setBackground(Color.blue); fr.setVisible(true); fr.showDialog(); } public MyFrame(String str) { super(str); addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public void showDialog() { FileDialog fd = new FileDialog(this, "FileDialog"); fd.setVisible(true); }