第七章 Java的图形用户界面设计
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课程设计一、课程目标知识目标:1. 让学生掌握Java基础语法,包括变量声明、数据类型、运算符等;2. 让学生学会使用Java控制结构,如条件语句和循环语句;3. 让学生掌握Java面向对象编程的基本概念,如类和对象的使用;4. 让学生了解Java图形用户界面编程,能够实现简单的游戏界面设计。
技能目标:1. 培养学生运用Java语言编写简单程序的能力;2. 培养学生运用逻辑思维和问题分析解决实际问题的能力;3. 培养学生运用面向对象编程思想设计和实现游戏的能力;4. 培养学生团队协作和沟通表达的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情;2. 培养学生严谨、细心的编程习惯,提高代码质量;3. 培养学生面对挑战和困难时,保持积极的心态,勇于尝试和解决问题;4. 培养学生团队协作精神,学会共享、互助和尊重他人。
课程性质:本课程为实践性较强的Java编程课程,以项目为导向,结合游戏设计,让学生在动手实践中掌握Java编程技能。
学生特点:学生为初中或高中年级,具备一定的计算机操作基础,对编程有一定兴趣,但可能缺乏实际编程经验。
教学要求:结合学生特点,课程设计应注重实践操作,以激发学生兴趣,提高编程技能。
同时,注重培养学生团队合作精神和解决问题的能力。
通过本课程的学习,使学生能够独立完成简单的Java游戏项目,为后续学习奠定基础。
二、教学内容1. Java基础语法:变量声明、数据类型、运算符、表达式、输入输出语句等;相关教材章节:第一章 Java语言概述,第二章 Java基本语法。
2. Java控制结构:条件语句(if-else, switch-case)、循环语句(for, while, do-while);相关教材章节:第三章 Java控制结构。
3. 面向对象编程基础:类与对象、构造方法、封装、继承、多态;相关教材章节:第四章 面向对象编程基础,第五章 类与对象。
实验7 图形用户界面之swing组件的使用_实验报告
学生姓名
***
学号
***
成绩
系(院)别
计算机科学与技术学院
专业
计算机科学与技术
班级
***
课程名称
Java程序设计
任课教师
李冰
实验日期
***
实验序号
7
实验名称
图形用户界面之swing组件的使用
实验室
软三实验室
实验台号
***
指导教师
李冰
一、实验目的
1、掌握JFrame类的使用方法。
2、掌握swing包内组件类的使用方法。
二、实验内容(详见实验内容文档)
1、编写一个Java应用程序,输入学生的姓名,选择性别、籍贯及文化程度,单击“确定”按钮显示学生信息,单击“取消”按钮可以重新输入或选择学生信息。(使用swing组件实现)
2、正确或错误。
3、为按钮添加动作监听器接口ActionListener。
4、实现ActionListener接口中的方法。
实验步骤:
……
五、实验结果(包括设计效果、测试数据、运行结果等)
此处书写实验的测试数据及运行结果,或程序的运行效果等。
六、实验小结(包括收获、心得体会、注意事项、存在的问题及解决问题的方法、建议等)
此处书写本次实验你的收获,本次实验你有什么心得体会,实验中存在的问题及解决方法,实验中的注意事项等。
七、附录(包括作品、流程图、源程序及命令清单等)
此处书写本次实验的源程序或流程图等。
1、实验环境
Java SE Development Kit
四、实验设计方案(包括实验步骤、设计方案、算法描述或流程图等)
设计方案:
图形用户界面
Window Panel
ScrollPane
TextArea TextField
Dialog Frame
FileDialog
Component(组件)
Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方式显 示在屏幕上并能与用户进行交互的对象,例如一个按 钮,一个文本框等。
10. f.add("East", new Button("East"));
11.
//第一个参数表示把按钮添加到容器的East区域
12. f.add("West", new Button("West"));
13.
//第一个参数表示把按钮添加到容器的West区域
14. f.add("Center", new Button("Center"));
LayoutManager (布局管理器)
为了使生成的图形用户界面具有良好的平台无关性, Java语言中,提供了布局管理器这个工具来管理组件 在容器中的布局,而不使用直接设置组件位置和大小 的方式。
每个容器都有一个布局管理器,当容器需要对某个组 件进行定位或判断其大小尺寸时,就会调用其对应的 布局管理器。
North区域缺少组件
West区域缺少组件
Center区域缺少组件
GridLayout
使容器中各个组件呈网格状布局
1. import java.awt.*;
2. public class ButtonGrid {
3. public static void main(String args[]) {
《java程序设计》实验指导书(09高职)
实验一 Java实验环境的建立一、实验目的1.掌握Java编程环境的搭建过程;2.掌握Jcreator pro软件的使用方法;3.能使用Java doc文档。
二、实验内容1.下载并安装JDK1.6,配置JDK环境变量;2.下载Javadoc压缩包并解压在JDK安装路径下;3.下载Jcreator pro 4.0并安装和配置使用环境;4.使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。
①Java application程序代码如下:public class HelloJava{public static void main(String args[]){System.out.println("Hello Java!");}}②Java applet程序代码如下:import java.awt.*;public class Hello extends java.applet.Applet{public void paint(Graphics g){g.drawString("Hello!",30,30);}}三、试验要求1、预习试验内容并写出上机报告。
2、实验中出现的问题及实验体会。
实验二 Java语言程序设计训练一、实验目的:1.输入、输出操作实现原理和方法2.掌握程序流程控制的实现方法3.掌握数组的定义和操作方法二、实验内容1.计算 Result=1!+2!+3!+ (10)2.计算1---50之间所有素数的和。
3. 产生10个100之内的随机整数输出,并把这10个数按从小到大的顺序输出。
4. 随机产生20个50~100间的整数,输出这20个数并找出最大数及最小数输出。
5.试编写程序,实现求几何形状(长方形、正方形、圆形)的周长、面积。
(可任选其一)6.验证书中的例题。
三、试验要求1、预习试验内容并写出上机报告。
2、实验中出现的问题及实验体会。
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图形用户界面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语言中,提供了布局管理器这个工具来管理 组件在容器中的布局,而不使用直接设置组件位置和 大小的方式。
JavaGUI设计入门教程
JavaGUI设计入门教程第一章:概述GUI设计的重要性和基本概念GUI(Graphical User Interface)是图形用户界面的缩写,是用户与计算机进行交互的一种方式。
GUI设计是软件开发中重要的一环,具有丰富的用户交互体验,提高了软件的易用性和用户满意度。
本章将介绍GUI设计的基本概念,包括窗口、组件、布局管理器等。
第二章:AWT和Swing库的介绍在Java中,AWT(Abstract Window Toolkit)和Swing是两个主要的GUI库。
AWT是Java最早的GUI库,提供了一系列平台相关的图形组件,而Swing则是在AWT的基础上开发的更强大的GUI库。
本章将介绍AWT和Swing库的基本概念、特点和使用方法。
第三章:使用AWT库进行GUI设计AWT库提供了一系列的组件和容器,可以用于创建窗口、按钮、标签等。
本章将详细介绍AWT库的常用组件和容器的使用方法,并通过示例代码展示如何创建简单的GUI界面。
第四章:使用Swing库进行GUI设计Swing库相较于AWT更加强大和灵活,提供了更多的组件和容器,并支持丰富的外观和主题。
本章将介绍Swing库的基本概念和使用方法,并通过示例代码展示如何使用Swing创建复杂的GUI界面。
第五章:布局管理器的使用布局管理器是用来控制组件在容器中的排列和布局的工具。
Java提供了多种布局管理器,如流式布局、边界布局、网格布局等。
本章将介绍各种常用的布局管理器的特点和使用方法,并通过示例代码展示如何实现不同风格的GUI布局。
第六章:事件处理机制GUI设计中经常需要处理用户的输入事件,如点击按钮、拖拽等。
Java提供了强大的事件处理机制,开发者可以通过注册监听器来处理特定的事件。
本章将介绍事件处理的基本原理和方法,并通过示例代码展示如何实现用户交互的响应。
第七章:用户界面实践案例分析通过以上章节的学习,读者已经具备了一定的GUI设计和实现的知识和技巧。
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的图形用户界面设计一、实验目的1. 熟悉Java图形用户界面设计的基本概念和常用组件。
2. 掌握Swing库的使用,能够设计简单的图形用户界面。
3. 培养编程实践能力,提高问题解决能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Eclipse IDE for Java Developers3. 编程语言:Java4. 开发库:Swing库三、实验内容1. 创建一个简单的图形用户界面,包括窗口、按钮、标签、文本框等组件。
2. 实现按钮点击事件,输出信息到控制台。
3. 设计一个带有滚动条的面板,展示大量数据。
4. 使用布局管理器(如FlowLayout、BorderLayout、GridLayout等)对界面进行布局。
四、实验步骤1. 创建一个名为“GUIProject”的Java项目,在Eclipse中导入Swing库。
2. 创建一个名为“MainFrame”的类,继承自JFrame类,作为主窗口。
3. 在“MainFrame”类中,添加以下代码:```javaimport javax.swing.;import java.awt.;public class MainFrame extends JFrame {public MainFrame() {// 设置窗口标题setTitle("图形用户界面设计");// 设置窗口大小setSize(500, 400);// 设置关闭操作setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置布局管理器setLayout(new BorderLayout());// 创建按钮JButton button = new JButton("点击我");// 添加按钮到窗口add(button, BorderLayout.CENTER);// 添加事件监听器button.addActionListener(e -> {System.out.println("按钮被点击了!");});}public static void main(String[] args) {// 创建窗口实例MainFrame frame = new MainFrame();// 显示窗口frame.setVisible(true);}}```4. 修改“MainFrame”类,添加滚动条和标签:```javaimport javax.swing.;import java.awt.;public class MainFrame extends JFrame {public MainFrame() {// ...(省略其他代码)// 创建面板JPanel panel = new JPanel();// 设置布局管理器panel.setLayout(new GridLayout(0, 1));// 创建标签JLabel label = new JLabel("这是一个标签");// 添加标签到面板panel.add(label);// 创建滚动条JScrollPane scrollPane = new JScrollPane(panel); // 添加滚动条到窗口add(scrollPane, BorderLayout.CENTER);}// ...(省略其他代码)}```5. 运行程序,观察效果。
实验七 图形用户界面设计
《Java语言程序设计》实验报告private JButton button_1,button_2,button_add,button_clear;public Simcal(){super("Calculator");this.setBounds(300, 240, 320, 90);this.setResizable(false);this.setBackground(java.awt.Color.lightGray);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));text = new JTextField("",27);text.setHorizontalAlignment(JTextField.RIGHT);text.setEditable(false);caretUpdate(null);this.getContentPane().add(text);text.addCaretListener(this);//JPanel panel = new JPanel(new GridLayout(1,4));//this.getContentPane().add(panel);button_1 = new JButton("1");button_1.addActionListener(this);//panel.add(button_1);this.getContentPane().add(button_1);button_add = new JButton("+");button_add.addActionListener(this);//panel.add(button_add);this.getContentPane().add(button_add);button_2 = new JButton("2");button_2.addActionListener(this);//panel.add(button_2);this.getContentPane().add(button_2);button_clear = new JButton("C");button_clear.addActionListener(this);//panel.add(button_clear);this.getContentPane().add(button_clear);this.setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==button_1){text.setText(text.getText()+"1");}if(e.getSource()==button_add){text.setText(text.getText()+"+");}if(e.getSource()==button_2){text.setText(text.getText()+"2");}if(e.getSource()==button_clear){text.setText("");}}public void caretUpdate(CaretEvent e){}public static void main(String arg[]){new Simcal();}}运行结果:(2)计算器如果时间允许,实现计算器的加、减、乘、除等基本运算,参考如下图形界面。
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)。
Swing与AWT不同
Swing组件在实现时不包含任何本地
(native)代码 Swing组件可以不受硬件平台的限制,而具 有更多的功能 Swing被称为“轻量级(lightweight)”组件, AWT称为“重量级(heavyweight)”组件
“重量级”组件与“轻量级”组件一同使用时, 如果组件区域有重叠,则“重量级”组件总是 显示在上面
BorderLayout构造方法
BorderLayout()
构造一个各部分间距为0的BorderLayout实例
BorderLayout(int, int)
构造一个各部分间具有指定间距的BorderLayout 实例
组件加入
在BorderLayout布局管理器的管理下,组件必
须通过add()方法加入到容器中的指定区域
面板(JPanel)
面板(JPanel)是一种用途广泛的容器 与顶层容器不同的是,面板不能独立存在,
必须被添加到其他容器内部
面板可以嵌套,由此可以设计出复杂的图
形用户界面
程序7-3
import java.awt.*; import javax.swing.*; 创建一个黄色面板,通过 add()方法在面板 public class FrameWithPanel { 中添加了一个按钮,然后将该面板添加到 public static void main(String args[]) { 一个JFrame 的实例中, JFrame实例的背 JFrame frame = new JFrame("Frame with Panel"); Container contentPane = frame.getContentPane(); 景被设置为蓝绿色 contentPane.setBackground(Color.CYAN); JPanel panel = new JPanel(); panel.setBackground(Color.yellow); JButton button = new JButton("Press me"); panel.add(button); contentPane.add(panel, BorderLayout.SOUTH); frame.setSize(300,200); frame.setVisible(true); } }
将组件放入内容窗格
创建一个新的内容窗格取代顶层容器缺省
的内容窗格。创建一个JPanel的实例,然 后将组件添加到JPanel实例中,再通过顶 层容器的setContentPane()方法将JPanel实 例设置为新的内容窗格(程序7-2)
JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout()); contentPane.add(button, BorderLayout.CENTER); frame.setContentPane(contentPane);
Swing组件是具有状态(state)的组件
容器
Java的图形用户界面由组件构成,例如按
钮(button)、文本输入框(textfield)、 标签(label)等都是组件,其中有一类特 殊的组件称为容器(container),例如框 架(frame)、面板(panel)等。容器是 组件的容器,各种组件(包括容器)可以 通过add()方法添加到容器中
布局
组件的布局,包括位置和大小,通常由布局管理
器(Layout Manager)负责安排 每个容器都有一个缺省的布局管理器 通过容器的setLayout()方法改变容器的布局管理 器 多种布局管理器
java.awt.FlowLayout、java.awt.BorderLayout、 java.awt.GridLayout、java.awt.GridBagLayout、 java.awt.CardLayout、javax.swing.BoxLayout和 javax.swing.SpringLayout
FlowLayout布局管理器
FlowLayout定义在java.awt包中,Fl对容
器中组件进行布局的方式是将组件逐个地 安放在容器中的一行上,一行放满后就另 起一个新行。在缺省情况下,将组件居中 放置在容器的某一行上 FlowLayout布局管理器并不强行设定组件 的大小,而是允许组件拥有它们自己所希 望的尺寸
省布局管理器 由BorderLayout管理的容器被划分成北 (North)南(South)西(West)东(East) 中(Center)五个区域,分别代表容器的上、 下、左、右和中部,表示为常量 BorderLayout.NORTH、BorderLayout.SOUTH、 BorderLayout.WEST、BorderLayout.EAST、 BorderLayout.CENTER BorderLayout定义在java.awt包中
顶层容器
顶层(Top level)容器
所有组件都必须包含在某个容器中,而有些容器是可 以嵌套的,在这个嵌套层次的最外层,必须是一个顶 层(Top level)容器 四种顶层容器 JFrame、JApplet、JDialog和Jwindow JFrame是一个带有标题行和控制按钮(最小化、恢 复/最大化、关闭)的独立窗口,创建应用程序时需 要使用JFrame。创建小应用程序时使用JApplet, 它被包含在浏览器窗口中。创建对话框时使用 JDialog。JWindow是一个不带有标题行和控制按钮 的窗口,因此通常很少使用
JFrame创建应用程序
程序7-1
内容窗格
顶层容器都有一个内容窗格(Content Pane) 顶层容器中除菜单之外的组件都是放在这
个内容窗格中
将组件放入内容窗格
通过顶层容器的getContentPane()方法获得
其缺省的内容窗格,然后将组件添加到内 容窗格中
Container contentPane = frame.getContentPane(); contentPane.add(button, BorderLayout.CENTER); frame.getContentPane().add(button, BorderLayout.CENTER);
ห้องสมุดไป่ตู้
注意
向顶层容器的内容窗格添加组件时,可以
直接调用顶层容器的add()方法,这与调用 内容窗格的add()方法是等价的(从J2SE 1.5开始 ) 顶层容器缺省内容窗格的布局管理器是 BorderLayout,而JPanel缺省的布局管理器 是FlowLayout,因此可能需要为JPanel实 例设置一个BorderLayout布局管理器
align对齐方式的可选项, align的可取值有 FlowLayout.LEFT、FlowLayout.RIGHT和 FlowLayout.CENTER三种形式 hgap和vgap,可以设定组件的水平间距和垂直 间距
程序7-5
程序7-5
BorderLayout布局管理器
BorderLayout是顶层容器中内容窗格的缺
程序7-4
import java.awt.*; import javax.swing.*; public class ExGui { private JFrame frame; private JButton b1; private JButton b2;
main()方法 在这个例子中,main()方 法有两个作用。首先,它创 建了一个ExGui类的实例, 在这个实例创建之前,并没 有实际可用的b1和b2数据 项。其次,当ExGui实例创 建好以后,main()又调用 了该实例的go()方法,在 这个方法中,程序的实际功 能得以实现。
AWT中主要类的继承关系
Button
Checkbox
Component
其他组件 MenuComponent
Container
TextComponent
MenuBar MenuItem
TextArea
TextField
不独立 Panel
Applet
独立 Window
Frame Dialog
Menu
swing主要类的继承关系
frame = new JFrame(“Frame Title”); button 如果在 add() 方法中没有指定将组件放到哪个区域, = new JButton(“Press Me”); frame.getContentPane().add(b, BorderLayout.SOUTH) ; 那么它将会缺省地被放置在 Center区域 frame.getContentPane().add(button); frame. getContentPane().add(new JButton(“buttonA”), 按钮将被放在框架的中部 BorderLayout.SOUTH); 在容器的每个区域,只能加入一个组件,如果向 frame. getContentPane().add(new JButton(“buttonB”), 某个区域中加入多个组件,那么只有最后一个组 BorderLayout.SOUTH); 件是有效的 frame. getContentPane().add(new JButton(“buttonC”), BorderLayout.SOUTH); 最后只有buttonC显示在South区域。
每个组件都有一个getPreferredSize()方法, 布局管理器会调用这一方法取得每个组件希望 的大小
FlowLayout构造方法
public FlowLayout() public FlowLayout(int align) public FlowLayout(int align, int hgap, int vgap)