GUI基础与布局管理
第四讲 GUI布局管理
![第四讲 GUI布局管理](https://img.taocdn.com/s3/m/02ed17370b4c2e3f572763f1.png)
清华大学继续教育学院 IT教育培训中心
Java的布局设计
本章学习内容(掌握基本的布局方法) 流动布局 网格布局 边界布局 卡片布局 网格袋布局 空布局
流动布局
自左向右、自上而下的安排组件,并且尽量 将组件居中。 流动布局不会改变组件的尺寸,当当前行无 法显示新增组件时,布局管理器会新增一行 以安放新增组件 一个典型的例子就是applet中的缺省组件显示。 使用教材上的示例列表显示
网格布局
需要事先指定布局的行列,形成网格。 组件由左向右、由上至下,并在本布局中会填充网格。缺点 在此,因为有可能造成组件显示失真。 当组件超过列数的时候,不是直接添加到下一行,而是增加 列数,行数保持不变。
和流布局管理器类不同的地方在于,组件不会因为窗体大小的变化而移 位,相反,组件通过自动缩放以保持屏幕组件的网格关系。
因为在边界布局中单个区域只能显示最后被 添加的组件。 解决这个问题的办法是:把组件添加至一个 中间容器,之后把中间容器添加到区域中。 如:panel = new Panel(); panel.add(new Button(“确定”)); panel.add(new Label(“选择”)); add(panel,BorderLayout.SOUTH);
import javax.swing.*; import java.awt.*; public class exec { public static void main(String [] args) { JFrame f=new JFrame("Hello!"); f.setLocation(10,100); f.setSize(600,400); f.getContentPane().setLayout(new FlowLayout()); JButton jb1=new JButton("Click 1"); JButton jb2=new JButton("Click 2"); JButton jb3=new JButton("Click 3"); f.getContentPane().add(jb1); f.getContentPane().add(jb2); f.getContentPane().add(jb3); f.setVisible(true); } }
PythonGUI之tkinter布局管理
![PythonGUI之tkinter布局管理](https://img.taocdn.com/s3/m/9f0f82ce250c844769eae009581b6bd97f19bcd9.png)
PythonGUI之tkinter布局管理所谓布局,就是指控制窗体容器中各个控件(组件)的位置关系。
tkinter 共有三种几何布局管理器,分别是:pack布局,grid布局,place布局。
pack布局使用pack布局,将向容器中添加组件,第一个添加的组件在最上方,然后是依次向下添加。
from tkinter import *root = Tk()#创建三个 Label 分别添加到root窗体中#Label是一种用来显示文字或者图片的组件Label(root,text = 'pack1',bg = 'red').pack()Label(root, text = 'pack2', bg = 'blue').pack()Label(root, text = 'pack3', bg = 'green').pack()root.mainloop()如图:###pack常用属性属性名属性简析取值取值说明fill 设置组件是否向水平或垂直方向填充X、Y、BOTH 和NONEfill = X(水平方向填充)fill = Y(垂直方向填充)fill = BOTH(水平和垂直)NONE 不填充expand 设置组件是否展开,当值为YES时,side选项无效。
组件显示在父容器中心位置;若fill选项为BOTH,则填充父组件的剩余空间。
默认为不展开YES 、NO(1、0)expand=YES expand=NOside 设置组件的对齐方式LEFT、TOP、RIGHT、BOTTOM值为左、上、右、下ipadx、ipady 设置x方向(或者y方向)内部间隙(子组件之间的间隔)可设置数值,默认是0非负整数,单位为像素padx、pady 设置x方向(或者y方向)外部间隙(与之并列的组件之间的间隔)可设置数值,默认是0非负整数,单位为像素anchor 锚选项,当可用空间大于所需求的尺寸时,决定组件被放置于容器的何处N、E、S、W、NW、NE、SW、SE、CENTER(默认值为CENTER)表示八个方向以及中心注意:上表中取值都是常量,YES等价于"yes",亦可以直接传入字符串值。
gui规范
![gui规范](https://img.taocdn.com/s3/m/c66a4f71777f5acfa1c7aa00b52acfc789eb9fed.png)
gui规范GUI规范是指在图形用户界面(Graphical User Interface)设计中遵循的一套规则和准则,旨在提供一致、直观、易用的用户体验。
以下是一份关于GUI规范的1000字说明。
一、用户界面的文件结构和布局:1. 使用模块化的结构,将界面划分为可重用的组件,提高开发效率和界面一致性。
2. 使用合理的布局方式,如网格布局、层叠布局等,以确保界面的可读性和可导航性。
二、界面元素的设计和使用:1. 使用简洁、直观的图标和按钮,以便用户快速识别并执行操作。
2. 避免使用过多的颜色、字体样式和动画效果,避免视觉混乱。
3. 使用标准化的元素,如标签、文本框、下拉框等,以提高用户的熟悉度和可操作性。
4. 为每个界面元素提供适当的提示和帮助信息,以减少用户的迷惑和错误操作。
三、用户输入和交互操作:1. 对用户的输入进行验证和提示,确保输入的准确性和合法性。
2. 提供合理的输入方式和格式,如日期选择器、数字输入框等,以提高用户的输入效率和准确性。
3. 提供撤销和重做的功能,以便用户可以更好地控制和调整操作。
4. 对于涉及重要操作的按钮和链接,使用二次确认对话框,以防止用户误操作。
四、界面的导航和搜索:1. 使用简洁明了的导航结构,如菜单栏、侧边栏等,帮助用户快速查找所需功能和页面。
2. 在搜索功能中提供自动完成、搜索建议等辅助功能,以提高用户的搜索效率和准确性。
3. 提供面包屑导航,显示用户当前的位置和路径,以便用户快速返回或切换到其他页面。
五、界面的反馈和响应:1. 提供即时的反馈,如进度条、加载动画等,告知用户操作的进展和结果。
2. 对于用户的错误操作,提供明确的错误提示和建议,以指导用户如何纠正错误。
3. 响应用户的操作,如点击、滚动等,及时更新界面,提高用户的操作流畅度和体验。
六、界面的可访问性和多语言支持:1. 遵循无障碍设计原则,确保界面对于视觉、听觉等残障用户的可访问性。
2. 提供多语言支持,以便用户可以在自己熟悉的语言环境下使用界面。
GUI基础概述
![GUI基础概述](https://img.taocdn.com/s3/m/099931f80242a8956bece4b3.png)
目前,大多数软件都是图形用户界面(Graphics User Interface, 简称GUI)的,并且程序的运行是靠事件驱动(event-driven) 的。
这样的应用程序可以使用户很方便地与程序进行交互。
本章主要介绍使用Java开发图形用户界面程序的方法,其中包括容器和布局管理器,另外还将介绍Java小程序的开发以及图形绘制等内容。
Java GUI基础1.1 概述图1就是一个图形用户界面的应用程序,其中包含的图形界面元素有窗口、菜单、工具栏、按钮、选项卡等。
该程序是JDK自带的演示程序,通过运行jdk_install\demo\jfc\swingset2.html或jdk_install \demo\jfc\SwingSet2\SwingSet2.jar程序可以得到该界面,这里jdk_install是JDK的安装目录。
图1 GUI演示程序在Java 1.2之前,Java提供了一个AWT类库,Sun把它叫做抽象窗口工具箱(Abstract Window Toolkit, 简称AWT) 。
为了开发GUI程序,程序员需要使用该库中有关的类,它为程序员提供了构建GUI程序的组件,如Frame、Button、Label等。
这些组件是通过java.awt 包提供的。
AWT最初是为设计小应用程序界面而开发的。
由于AWT存在严重缺陷,Sun从Java 1.2 版开始提供了一个新的组件库Swing。
Swing可以说是第二代GUI开发工具集,它是通过javax.swing包提供的,javax.swing包也是Java基础类库(Java Foundation Classes,JFC)的组成部分。
由于Swing组件比AWT组件有许多优点,所以新开发的程序应该使用Swing 组件而不应该再使用AWT组件。
但是,要注意Swing组件并没有完全取代AWT,它只是替代了AWT包中的图形用户界面组件(如Button、TextFiels、TextArea等),AWT中的一些辅助类(如Graphics、Color、Font、LayoutManager等)仍然保持不变。
GUI组件及布局管理器-刘京
![GUI组件及布局管理器-刘京](https://img.taocdn.com/s3/m/a9e0742ab90d6c85ed3ac609.png)
主讲: 刘 京
专业:计算机技术
GUI 组件
• Java提供的基本的GUI设计工具:
• Component
• Container
• LayoutMa本组成部分是组件,组件是一个可以以图形化的方式 显示在屏幕上并能与用户进行交互的对象,例如一个按钮、标签等 • 组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来
• 构造函数:
• BorderLayout() 建立组件间无间距的BorderLayout • BorderLayout(int h,int v) 建立组件间水平间距为h,垂直间距为v的BorderLayout
CardLayout布局
• 以层叠的方式布局组件,最先加入容器的第一个,依次向下排列。 • 构造函数:
• 构造函数:
• BoxLayout(Container target,int axis)
• 建立一个水平或垂直的BoxLayout,BoxLayout提供两个常数X_AXIS和Y_AXIS来表示 水平或垂直排列。 • 说到BoxLayout,就不得不提到Box这个Container,Box这个Container默认的 Layout为BoxLayout,而它只能使用这个Layout,否则编译时会有Error产生。 • Box(int axis) • 建立一个Box Container(容器),并指定组件的排列方式,通过使用BoxLayout提供 的两个常数X_AXIS和Y_AXIS来指定盒式布局是行型盒式布局还是列型盒式布局。
• GridLayout() 建立一个默认为一行一列的GridLayout 建立一个指定行(rows)和列(cols)的GridLayout • GridLayout(int rows,int cols)
Java中的GUI界面设计和事件处理入门
![Java中的GUI界面设计和事件处理入门](https://img.taocdn.com/s3/m/7ed7388f81eb6294dd88d0d233d4b14e84243e70.png)
Java中的GUI界面设计和事件处理入门一、引言Java是一种面向对象的编程语言,具有广泛的应用领域。
在软件开发过程中,GUI界面设计和事件处理是非常重要的一部分。
本文将介绍Java中的GUI界面设计和事件处理的入门知识,以帮助读者了解和掌握这方面的技术。
二、GUI界面设计基础GUI(Graphical User Interface,图形用户界面)是指通过图形、图像和动画等方式来显示信息,提供用户与计算机之间的交互。
在Java中,可以使用Swing和JavaFX等库来进行GUI界面设计。
1. 布局管理器在GUI界面设计中,布局管理器用于管理组件的布局方式。
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout和GridBagLayout等。
使用不同的布局管理器可以实现不同的界面布局效果。
2. 组件组件是GUI界面的基本元素,可以是按钮、文本框、标签、列表框等。
在Java中,可以使用JButton、JTextField、JLabel和JList等类来创建各种组件。
可以设置组件的属性,如大小、位置和样式等。
3. 事件监听器事件监听器用于捕捉用户操作产生的事件,并做出相应的处理。
在Java中,可以使用addActionListener()方法为组件添加监听器,响应用户的点击事件。
事件监听器可以以匿名内部类的形式实现,也可以作为单独的类来处理。
三、GUI界面设计实例下面以一个简单的登录界面为例,介绍如何使用Java中的GUI 界面设计来创建一个具有交互功能的窗体。
1. 导入必要的类库首先需要导入javax.swing和java.awt等类库,以便使用其中的类和方法。
2. 创建窗体可以通过继承JFrame类来创建一个窗体对象,然后设置窗体的标题、大小和关闭方式等属性。
3. 添加组件可以使用JLabel、JTextField和JButton等组件类来创建对应的界面元素,并设置它们的属性和布局。
GUI编程技术布局管理
![GUI编程技术布局管理](https://img.taocdn.com/s3/m/02f7b82702d276a201292e6e.png)
public static Box createHorizontalBox()
public static Box createVerticalBox()
盒式容器实例1
import java.awt.*;import javax.swing.*;
import java.awt.event.*;
b1=new Button("第一张卡片");
b2=new Button("第二张卡片");
b3=new Button("第三张卡片");
b4=new Button("第四张卡片");
p.add("1",b1);p.add("2",b2);
p.add("3",b3);p.add("4",b4);
b1.addActionListener(this);
import java.awt.*;import java.applet.*;
public class E1 extends Applet
{
Button b1,b2,b3,b4;
TextArea ta;
public void init()
{
BorderLayout b=new BorderLayout(10,10);
2.1BorderLayout()
2.2BorderLayout(int hgap, int vgap)
hgap水平间隔
vgap垂直间隔
3.1创建BorderLayout对象
3.2调用容器的setLayout()方法为容器设置布局管理器
Python GUI编程入门指南
![Python GUI编程入门指南](https://img.taocdn.com/s3/m/8f9b7828dcccda38376baf1ffc4ffe473268fd50.png)
Python GUI编程入门指南Python GUI编程是指使用Python语言进行图形用户界面(GUI)开发的过程。
通过GUI,用户可以通过鼠标、键盘和其他输入设备与程序进行交互,使程序更加友好和易于使用。
本文将引导读者了解Python GUI编程的基础知识和入门指南。
一、Python GUI编程的重要性和应用领域Python GUI编程在现代软件开发中扮演着重要角色。
它广泛应用于图像处理、数据可视化、游戏开发、桌面应用程序和移动应用程序等领域。
Python具有简单易用的语法和丰富的第三方库,例如Tkinter、PyQt、wxPython等,使得开发GUI变得简单和高效。
二、Python GUI编程的基础知识1. Tkinter库:Tkinter是Python的标准GUI库,包括了创建窗口和各种GUI元素的类和方法。
可以通过以下代码导入Tkinter库:```pythonimport tkinter as tk```2. 创建窗口:通过Tkinter库提供的Tk类可以创建一个窗口,例如:```pythonroot = ()```3. GUI元素:在Tkinter中,各种GUI元素被称为控件(Widget),例如按钮(Button)、标签(Label)、文本框(Entry)等。
可以通过Tk类的方法创建这些控件,例如:```pythonbutton = tk.Button(root, text="点击我")```4. 布局管理器:在GUI界面中,布局管理器指定GUI元素在窗口中的位置和大小。
Python提供了多种布局管理器,例如pack布局、grid布局和place布局。
三、Tkinter库的基本使用Tkinter库是Python编写GUI应用程序的常用工具。
以下是一些基本的使用示例:1. 创建窗口和标签:```pythonimport tkinter as tkroot = ()label = bel(root, text="欢迎使用Python GUI编程")label.pack()root.mainloop()```2. 创建按钮和事件绑定:```pythonimport tkinter as tkdef button_click():print("按钮被点击了!")root = ()button = tk.Button(root, text="点击我", command=button_click)button.pack()root.mainloop()```3. 创建文本框和获取输入:```pythonimport tkinter as tkdef button_click():input_text = entry.get()print("文本框输入的内容是:", input_text)root = ()entry = tk.Entry(root)entry.pack()button = tk.Button(root, text="点击我", command=button_click)button.pack()root.mainloop()```四、进阶GUI库的使用除了Tkinter,还有其他进阶GUI库可以支持更复杂的GUI应用程序开发。
JavaGUI布局管理器
![JavaGUI布局管理器](https://img.taocdn.com/s3/m/3216d49270fe910ef12d2af90242a8956becaade.png)
JavaGUI布局管理器容器可设置布局管理器,管理容器中组件的布局:container.setLayout(new XxxLayout());Java有6种布局管理器,AWT提供了5种:FlowLayoutBorderLayoutGridLayoutGridBagLayoutCradLayoutSwing还提供了⼀种:BoxLayout1、FlowLayout 流式布局顾名思义,组件像⽔流⼀样,从第⼀⾏开始,从左向右依次排列,碰到边界时转到下⼀⾏继续。
三个构造函数:FlowLayout() //使⽤默认参数FlowLayout(int align) //设置对齐⽅式FlowLayout(int align,int hgap,int vgap) //设置对齐⽅式、⽔平间距、垂直间距align是FlowLayout类的常量,⽐如:FlowLayout.LEFT,FlowLayout.CENTER2、BorderLayout 边界布局将容器划分为EAST、WEST、SOUTH、NORTH、CENTER五个部分,每个部分可放置⼀个组件。
2个构造函数:BorderLayout() //使⽤默认参数BorderLayout(int hgap,int vgap) //设置⽔平间距、垂直间距放置组件时需指定位置:container.add(Component comp, Borderlayout.SOUTH); //第⼆个参数是BorderLayout类的常量,指定组件位置container.add(Component comp); //缺省位置时,默认为BorderLayout.CENTER,放在中间⼀共5个位置,⼀个位置最多放1个组件。
当然,可以在⼀个位置放置多个组件,只是后放置的组件会覆盖之前放置的组件。
也可以⼀个都不放。
3、GridLayout ⽹格布局将容器划分为指定⾏数、列数的⽹格,每个格⼦的尺⼨都相同,⼀个格⼦中放置⼀个组件,适合组件⼤⼩差不多的,⽐如放置计算器的按钮。
gui编程原理
![gui编程原理](https://img.taocdn.com/s3/m/4519d79127fff705cc1755270722192e4536582a.png)
gui编程原理GUI编程,全称图形用户界面编程,是指使用图形化的方式来开发程序界面的一种编程方式。
传统的命令行界面只能通过输入命令来操作程序,而GUI则通过用户直观的图形界面,使用鼠标、键盘等输入设备与程序进行交互操作,使得程序更加易于使用和理解。
GUI编程的原理基于计算机图形学和用户界面设计的理论与技术。
在实际应用中,GUI编程通过一系列用户界面元素(如窗口、按钮、文本框等)和事件处理机制来实现程序界面的交互效果。
在GUI编程中,有一些重要的概念和原理需要了解:1. 窗口系统:GUI程序在操作系统中运行,要与窗口系统进行交互。
常见的窗口系统有Windows、Mac OS和Linux等。
不同的窗口系统提供不同的图形库和接口,开发者需要根据目标平台选择合适的开发环境和工具。
3.事件处理机制:GUI程序中的用户操作(如点击按钮、输入文本等)会触发相应的事件,程序需要通过事件处理机制来响应这些事件。
通常,开发者需要定义事件的处理函数,并将其与用户界面元素关联起来。
4.布局管理:在GUI程序中,用户界面元素需要按照一定的规则进行布局。
布局管理器是一种常用的机制,用于自动调整界面元素的位置和大小,以适应不同屏幕分辨率和窗口大小。
5.图形绘制:GUI程序中的图形绘制需要使用图形库提供的绘图函数。
开发者可以使用基本的图形绘制函数,如绘制线条、矩形和圆形,也可以使用更高级的绘图函数来实现复杂的图形效果。
6.状态管理:GUI程序通常需要维护一些状态信息,以便在不同的操作之间进行数据传递和持久化。
开发者需要设计合适的数据结构和状态管理机制,以满足程序的需求。
GUI编程可以使用不同的编程语言来实现,如Java、Python、C#等。
不同的编程语言提供了各自的GUI库和框架,开发者可以根据自己的需求和熟练程度选择合适的语言和工具。
在实际开发中,GUI编程是一项具有挑战性的任务。
开发者需要考虑用户体验、界面美观、响应速度等多个方面。
gui基本原理
![gui基本原理](https://img.taocdn.com/s3/m/c4001e18ae45b307e87101f69e3143323968f5f3.png)
gui基本原理GUI基本原理1. 什么是GUIGUI(Graphical User Interface),即图形用户界面,是一种人机交互界面,使用图形和图像来显示信息、实现操作。
与之相对应的是命令行界面(CLI),用户通过输入命令来操作。
2. GUI的基本组成GUI由以下几个基本组成部分构成:•窗口(Window):用户界面的基本单元,用于显示和接受用户操作。
窗口可以包含标题栏、菜单栏、工具栏、状态栏等。
•控件(Widget):窗口中的各种元素,用于展示信息和接受用户输入。
常见的控件有按钮、文本框、下拉框等。
•布局管理器(Layout Manager):用于控制窗口内控件的布局方式,如居中、靠左等。
•事件处理(Event Handling):用户的操作会触发相应的事件,通过事件处理机制,可以响应、处理这些事件,实现用户与应用程序的交互。
3. GUI的工作原理GUI的工作原理可以分为以下几个步骤:1.绘制窗口:首先,应用程序创建一个窗口对象,并通过操作系统调用,绘制窗口的基本框架和样式。
2.加载控件:界面设计师根据需求,在窗口中加载各种控件,设定控件的属性和样式。
3.事件循环:一旦窗口加载完成,应用程序就进入事件循环中。
在事件循环中,应用程序不断监听用户的操作,如鼠标点击、键盘输入等。
4.事件处理:当用户进行某种操作时,操作系统会根据操作类型生成相应的事件。
应用程序通过事件处理机制,捕获并处理这些事件,如执行相应的操作、更新窗口内容等。
5.刷新窗口:在事件处理过程中,应用程序可能需要更新窗口内容、样式等。
一旦更新完成,应用程序通过操作系统调用,将最新的窗口信息绘制出来。
6.循环更新:一旦窗口更新完成,应用程序再次进入事件循环,等待用户的下一次操作。
GUI的工作就是不断重复这个过程,实现用户与应用程序的交互。
4. GUI的优势和应用场景GUI相比于CLI具有以下优势:•直观性:通过图形和图像的展示,用户能够更直观地理解和操作应用程序。
第一章 GUI1_概述、容器、布局
![第一章 GUI1_概述、容器、布局](https://img.taocdn.com/s3/m/964b9789680203d8ce2f24a9.png)
GUI概述 概述
组件是一个可以以图形化的方式显示在屏幕上并 组件是一个可以以图形化的方式显示在屏幕上并 能与用户进行交互的对象.例如一个按钮, 能与用户进行交互的对象.例如一个按钮,一个 菜单,一个标签等. 菜单,一个标签等. 组件不能独立地显示出来, 组件不能独立地显示出来,必须将组件放在一定 的容器中才可以显示出来. 的容器中才可以显示出来. ponent是许多组件类的父类 是许多组件类的父类, 类ponent是许多组件类的父类, Component类中封装了组件通用的方法和属性 类中封装了组件通用的方法和属性, Component类中封装了组件通用的方法和属性, 如图形的组件对象,大小,显示位置, 如图形的组件对象,大小,显示位置,前景色和 背景色,边界,可见性等, 背景色,边界,可见性等,因此许多组件类也就 继承了Component类的成员方法和成员变量. Component类的成员方法和成员变量 继承了Component类的成员方法和成员变量.
GUI概述 概述
组件相应的成员方法包括: 组件相应的成员方法包括: 相应的成员方法包括
getFont() getForeground() getName() getSize() paint(Graphics g) repaint() update() setVisible(boolean b) setSize(Dimension d) name)等等 等等. setName(String name)等等.
Swing特性 特性
(a) Metal L&F
(b) CDE/Motif L&F
(c) Windows L&F
Swing特性 特性
支持高级访问方式:所有Swing组件都实现了 Accessible接口,提供对非常规高级访问方式的支 持,使得一些辅助功能如屏幕阅读器等能够十分方 便地从Swing组件中得到信息. 支持键盘操作:在Swing组件中,使用JComponent 类的registerKeyboardAction( )方法,为Swing组 件提供热键,能使用户通过键盘操作来代替鼠标驱 动Swing组件的相应动作.
五种JAVAGUI布局管理的方式
![五种JAVAGUI布局管理的方式](https://img.taocdn.com/s3/m/9d5d447b59fafab069dc5022aaea998fcc224009.png)
五种JAVAGUI布局管理的⽅式1. 流式布局(FlowLayout)定义:通俗地说,流式布局就是根据窗⼝⼤⼩,⾃动改变窗⼝内组件的位置。
例如:原窗⼝⼤⼩⼀⾏可以容纳10个BUTTON,但将窗⼝缩⼩后,每⾏仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就会⾃动排列到下⼀⾏。
⽰例:(省略panel的使⽤)Hashsetpackage 布局管理;import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Layout { //流式布局public static void main(String[] args) {Frame frame = new Frame(); //创建⼀个窗⼝frame.setLayout(new FlowLayout(FlowLayout.LEFT)); //将窗⼝布局设置为流式布局,并设置向左对齐Button button1 = new Button("button1"); //创建若⼲个按钮Button button2 = new Button("button2");Button button3 = new Button("button3");Button button4 = new Button("button4");Button button5 = new Button("button5");frame.add(button1); //将按钮添加进窗⼝中frame.add(button2);frame.add(button3);frame.add(button4);frame.add(button5);frame.setBounds(200,200,500,500); //设置窗⼝的位置与⼤⼩frame.setVisible(true); //设置窗⼝可见性frame.addWindowListener(new WindowAdapter() { //事件监听:关闭窗⼝@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}}2. 东西南北中布局(BorderLayout)定义:东西南北中布局,顾名思义。
GUI图形功能及三大布局器Layout的使用
![GUI图形功能及三大布局器Layout的使用](https://img.taocdn.com/s3/m/1ad1b6cc7f1922791688e8e5.png)
GUI图形功能\\GUI图形功能import java.awt.*;import javax.swing.*;public class Test{public static void main(String[] args){JFrame jf=new JFrame(); // JFrame是一个顶层容器类(可以添加其他的swing组件)J Button jb1=new JButton(“我是按钮”); //创建一个button按钮jf.add(jb1); //添加JButton组件jf.setTitle(“我是窗体”); //设置标题jf.setSize(200,300); //设置大小jf.setLocation(100,150); //设置初始位置jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置当关闭窗口时保证JVM退出jf.setVisible(true); //显示}}\\通用方法import java.awt.*;import javax.swing.*;public class Test extends JFrame{J Button jb1=null; //把需要的swing组件,定义到这里Test(){jb1=new JButton(“我是按钮”); //创建一个button按钮this.add(jb1); //添加JButton组件this.setTitle(“我是窗体”); //设置标题this.setSize(200,300); //设置大小this.setLocation(100,150); //设置初始位置this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置当关闭窗口时,保证JVM也退出this.setVisible(true); //显示}public static void main(String[] args){Test t=new Test();}}三大常用布局器管理器1、继承JFrame2、定义你需要的组件3、创建组件(构造方法里)4、添加组件5、对窗体设置/**一、边界布局器BorderLayout的使用*/package ;import java.awt.*;import javax.swing.*;public class Demo extends JFrame { //继承JFrameJButton jb1,jb2,jb3,jb4,jb5,jb6; //定义组件public Demo(){jb1=new JButton("中"); //创建组件jb2=new JButton("东");jb3=new JButton("西");jb4=new JButton("南");jb5=new JButton("北");jb6=new JButton("不知道");this.add(jb1,BorderLayout.CENTER); //添加组件this.add(jb2,BorderLayout.EAST);this.add(jb3,BorderLayout.WEST);this.add(jb4,BorderLayout.SOUTH);this.add(jb5,BorderLayout.NORTH);this.setTitle("我是边界布局器"); //设置窗体属性this.setSize(300,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocation(100,100);this.setVisible(true);}public static void main(String[] args) {// TODO Auto-generated method stubDemo d=new Demo();}}/*** 二、流式布局器FlowLayout的使用* 比边界布局要多一个“设置布局管理器”这个步骤*/package ;import java.awt.*;import javax.swing.*;class Demo extends JFrame{JButton jb1,jb2,jb3,jb4,jb5,jb6;public Demo(){jb1=new JButton("1");jb2=new JButton("2");jb3=new JButton("3");jb4=new JButton("4");jb5=new JButton("5");jb6=new JButton("6");this.add(jb1);this.add(jb2);this.add(jb3);this.add(jb4);this.add(jb5);this.add(jb6);//设置流式布局管理器(左右对齐\中对齐)this.setLayout(new FlowLayout(FlowLayout.RIGHT));this.setTitle("流式布管理局器");this.setSize(220,450);this.setLocation(100,100);this.setResizable(false); //禁止改变窗口大小this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args){Demo d=new Demo();}}另一个实现代码:用数组实现import javax.swing.*;import java.awt.*;public class Demo2 extends JFrame{JButton[] jbutton=new JButton[5];Demo2(){for(int i=0;i<5;i++){jbutton[i]=new JButton(String.valueOf(i+1)); //返回字符串this.add(jbutton[i]);}this.setLayout(new FlowLayout(FlowLayout.LEFT));this.setTitle("flow");this.setSize(200,140);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {Demo2 d=new Demo2();}}//三、网格布局器GridLayout的使用package ;import java.awt.*;import javax.swing.*;public class Test2 extends JFrame{JButton[] jbs=new JButton[9];public Test2(){for(int i=0;i<9;i++){jbs[i]=new JButton(String.valueOf(i+1));}this.setLayout(new GridLayout(3,3,10,10));//设置网格布局管理器for(int i=0;i<9;i++){this.add(jbs[i]);}this.setTitle("网格布管理局器");this.setSize(420,240);this.setLocation(100,100);this.setResizable(false); //禁止改变窗口大小this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public static void main(String[] args) {Test2 t2=new Test2();}}//四、三种布局器的混合使用// 例1://JPanel 的应用:JPanel 默认是FlowLayout// JFrame 使用边界布局import java.awt.*;import javax.swing.*;public class Test3 extends JFrame{JPanel jp1,jp2; JButton jb1,jb2,jb3,jb4,jb5,jb6;Test3(){jp1=new JPanel();jp2=new JPanel();jb1=new JButton("语文"); jb2=new JButton("数学"); jb3=new JButton("思维");jb4=new JButton("画画");jb5=new JButton("活动");jb6=new JButton("吃饭");jp1.add(jb1); //添加按钮到JPanel ,JPanel 默认是FlowLayout jp1.add(jb2);jp2.add(jb4); jp2.add(jb5); jp2.add(jb6);this.add(jp1,BorderLayout.NORTH);this.add(jp2,BorderLayout.SOUTH);this.add(jb3,BorderLayout.CENTER);this.setTitle("小学生课表");this.setSize(300,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocation(100,100);this.setVisible(true);}public static void main(String[] args) { Test3 t3=new Test3();}}// 例2:JFrame使用网格布局import javax.swing.*;import java.awt.*;public class Demo2 extends JFrame{JPanel jp1,jp2,jp3;JLabel jla1,jla2;JTextField jtf1;JPasswordField jpf1;JButton jb1,jb2;Demo2(){jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jla1=new JLabel("管理员");jla2=new JLabel("密码");jtf1=new JTextField(10);jpf1=new JPasswordField(10);jb1=new JButton("确认");jb2=new JButton("取消");jp1.add(jla1);jp1.add(jtf1);jp2.add(jla2);jp2.add(jpf1);jp3.add(jb1);jp3.add(jb2);this.add(jp1);this.add(jp2);this.add(jp3);this.setLayout(new GridLayout(3,1)); // JFrame使用网格布局this.setTitle("会员管理系统");this.setSize(300,160);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {Demo2 d=new Demo2();}}。
6.1GUI基础与布局管理
![6.1GUI基础与布局管理](https://img.taocdn.com/s3/m/a1269ef904a1b0717fd5ddd7.png)
5
进一步认识Java GUI程序
调试运行例题6-2
• JLabel,标签组件,用来在窗口中显示信息. • getContentPane()是JFram的方法,用来获取 当前对象的窗口容器(Container).所有在窗口 中显示的组件都要加入到这个容器中.通常情况 下,用add方法将组件加入. • Container类位于java.awt包.
14
Java面向对象程序设计
GUI基础与布局管理
1
内容提要
1
2 3
何为GUI?
java.awt 包与javax.swing包
JFram及其相关方法 Java布局管理器 Java GUI程序的基本结构
4
5
2
教学目标
了解GUI及其工作原理,了解java.awt 包与
javax.swing包
掌握JFram类及其相关方法 掌握Java布局管理器 掌握GUI程序的设计方法与实现步骤
11
网格布局
调试运行例题6-5
• 定义网格布局管理器对象 GridLayout myLayout=new GridLayout(3,2); • 设置容器的布局管理方式为网格布局方式
winContainer.setLayout(myLayout);
网格布局(GridLayout)将容器划分为m 行,n列个网格,每个网格放置一个组件. 组件通过容器的add(组件)方法将组件 从左到右放置在对应的网格中。
手工布局允许程序员对界面进行个性 化的设计,即由程序员来安排组件在容 器中的具体位置和大小.组件通过容器 的add(组件)方法加入。
13
小结
Java GUI界面设计步骤:
1.引入组件所在的包(如javax.swing.和java.awt) 2.定义图形用户界面类,该类继承自JFrame 3.将图形用户界面中需要的组件定义成成员变量 4.添加构造器方法,在该构造器方法中,实现界面设计 (1)调用父类JFrame构造器方法 (2)将需要在当前窗口放置的组件进行初始化 (3)通过this.getContentPane()获得当前窗口容器对象 (4)定义并设置当前容器的布局管理方式 (5)将定义好的组件添加到当前窗口 (6)将窗口设置为合适的大小 (7)显示窗口 5.生成窗口对象(通常在main方法中生成),你就可以看到相应的窗口了
实验十三 GUI布局管理与常用组件
![实验十三 GUI布局管理与常用组件](https://img.taocdn.com/s3/m/ac30f70dc281e53a5802ff74.png)
实验十三GUI布局管理与常用组件一、实验目的掌握GUI的四种基本布局管理器和常用组件的添加和使用。
二、实验要求1、设计和实现Java图形界面应用程序。
2、掌握Java布局管理器的设置方法,学会在不同的窗口中填加各种组件。
3、设计并分析程序,写出本实验的收获。
三、实验内容图形用户界面概述,布局管理器,常用标准GUI 组件和Swing GUI组件。
运行并理解教材案例7-5—7-7,完成以下实验任务。
四、参考程序1、/**周边布局及组件*/import java.awt.*;import javax.swing.*;class A extends JFrame{public static void main(String[] args){JFrame a=new JFrame();Container c=a.getContentPane();c.setLayout(new BorderLayout());c.add(new JButton("1"),BorderLayout.NORTH);c.add(new JButton("2"),BorderLayout.SOUTH);c.add(new JButton("3"),BorderLayout.EAST);c.add(new JButton("4"),BorderLayout.WEST);c.add(new JButton("5"),BorderLayout.CENTER);a.setSize(300,200);a.show();}}五、实验任务1、AWT主要由哪几部分组成?2、AWT中的布局管理器有哪几个?3、AWT、Swing和SWT的区别与联系?4、在容器底部放置一个按钮,不论如何改变容器尺寸,按钮始终在底部,那布局管理器使用最简单?5、完成课后实验一、三、四的除事件处理外的用户界面部分。
Java面向对象程序设计(第二版)GUI 基础与布局管理
![Java面向对象程序设计(第二版)GUI 基础与布局管理](https://img.taocdn.com/s3/m/bcb308cf856a561252d36fbe.png)
网格包布局(GridBagLayout)
7.小结:
GUI程序的设计步骤。
小结及学生存在的问题:
作业:
完成相关实战演习。
教学过程:
1.问题引入
•如何编写具有windows界面的应用程序?
•什么是图形用户界面(GUI-Graphics User Interface)?
•Java通过什么支持GUI?
2.认识GUI
调试例题6-1,观察程序运行界面,让学生了解什么是GUI程序。
简单分析讲解程序中出现JFram类等。
3.进一步认识Java GUI程序
5.四种常用布局管理器
调试例题6-3,让学生了解顺序布局管理的特点与使用方法。
调试例题6-4,让学生了解边界布局管理的特点与使用方法。
调试例题6-5,让学生了解网格布局管理的特点与使用方法。
调试例题6-6,让学生了解手工布局管理的特点与使用方法,这里需要讲解一下图形模式下屏幕坐标形式。
6.其它布局管理方式(提一下就可以了,不常用)
教学单元:GUI基础与布局管理
授课班级:
授课时间:
教学地点:
?
2.java.awt包与javax.swing包
3.JFram及其相关方法
4.Java布局管理器
5.Java GUI程序的基本结构
应会:
1.掌握顺序布局、边界布局、网格布局和手工布局的特点;
2.会编写简单的GUI程序,并能准确地进行布局管理;
调试例题6-2,(让学生参考书中程序在例题6-1的基础上修改即可)观察程序运行界面,让学生了解窗口与组件。
简单分析讲解程序中出现的窗口容器、标签组件概念等,了解如何获取窗口容器,如何将组件加入窗口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
winContainer.add("East",jL1)
或:winContainer.add(BorderLayout.EAST,jL1);
边界布局(BorderLayout)是把容器分为5个区: 北区(North)、南区(South)、东区(East)、 西区(West)和中区(Center)。这几个区的分 布规律是“上北下南,左东右西中”。组件可以通 过容器的add(区域,组件)的方法将其指定显示位置。 由于只有5个区域,因此,边界布局最多只能放置5 个组件。
winContainer.setLayout(null);
手工布局允许程序员对界面进行个性 化的设计,即由程序员来安排组件在容 器中的具体位置和大小.组件通过容器 的add(组件)方法加入。
小结
Java GUI界面设计步骤:
1.引入组件所在的包(如javax.swing.和java.awt) 2.定义图形用户界面类,该类继承自JFrame 3.将图形用户界面中需要的组件定义成成员变量 4.添加构造器方法,在该构造器方法中,实现界面设计 (1)调用父类JFrame构造器方法 (2)将需要在当前窗口放置的组件进行初始化 (3)通过this.getContentPane()获得当前窗口容器对象 (4)定义并设置当前容器的布局管理方式 (5)将定义好的组件添加到当前窗口 (6)将窗口设置为合适的大小 (7)显示窗口 5.生成窗口对象(通常在main方法中生成),你就可以看到相应的窗口
顺序布局管理 • 调试运行例题6-3
• 定义顺序布局管理对象 FlowLayout myLayout=new FlowLayout();
• 设置容器的布局管理方式为顺序布局方式
winContainer.setLayout(myLayout);
顺序布局(FlowLayout)是把组件 一个接一个地从左到右顺序排列,一 行排满后就转到下一行继续排列,直
Java的布局管理器
Java的布局管理器提供了几种不同的布局管理方式,用来 控制组件在容器中的显示方式和显示位置.
所有的布局管理方式都是以类的形式实现的,这些类位于 java.awt包中.
常用的布局管理方式有下面几种: 顺序布局:FlowLayout 边界布局:Borderlayout 网格布局:GridLayout 手工布局:
Java面向对象程序设计 GUI基础与布局管理
内容提要
1
何为GUI?
2
java.awt 包与javax.swing包
3
JFram及其相关方法
4
Java布局管理器
5
Java GUI程序的基本结构
教学目标
了解GUI及其工作原理,了解java.awt 包与
javax.swing包
掌握JFram类及其相关方法 掌握Java布局管理器 掌握GUI程序的设计方法与实现步骤
了
网格布局
调试运行例题6-5
• 定义网格布局管理器对象 GridLayout myLayout=new GridLayout(3,2);
• 设置容器的布局管理方式为网格布局方式 winContainer.setLayout(myLayout);
网格布局(GridLayout)将容器划分为m 行,n列个网格,每个网格放置一个组件. 组件通过容器的add(组件)方法将组件 从左到右放置在对应的网格中。
进一步认识Java GUI程序
调试运行例题6-2
• JLabel,标签组件,用来在窗口中显示信息. • getContentPane()是JFram的方法,用来获取 当前对象的窗口容器(Container).所有在窗口 中显示的组件都要加入到这个容器中.通常情况 下,用add方法将组件加入. • Container类位于java.awt包.
手工布局
调试运行例题6-6
• jL1.setBounds(x,y,width,height); 设置标签组件jL1左上角坐标在窗口中位于 (x,y)处,组件jL1宽为width像素,高为heiht像素.
•窗口的原点位于窗口的左上角. X值越大,就越靠 近窗口的右边,y值越大,就越靠近窗口的下面. •设置容器的布局管理方式为null布局方式
• 抽象窗口工具包AWT (Abstract Window Toolkit)
是 API为Java 程序提供的建立图形用户界面GUI
工具集,AWT可用于Java的applet和applications 中。
javax.swing包与java.awt包
javax.swing包与java.awt包是java支持GUI程序设计的2个包, 它们包含了GUI设计的所有组件.
到把所有组件都排列完毕为止。 在顺序布局方式中,组件通过容器的 add(组件)方法来实现上述排列。
边界布局
调试运行例题6-4
• 定义边界布局管理器对象 BorderLayout myLayout=new BorderLayout();
• 设置容器的布局管理方式为边界布局方式
winContainer.setLayout(myLayout);
在Java最早推出的JDK1.0版本中,有1个叫做java.awt的包, 在该包中包含有一些常见的组件。但随着计算机应用技术的不断 提高,java.awt包中的组件已经不能满足需求。因此,从 JDK1.1版本开始,JAVA又提供了1个新的包,这就是 javax.swing包。
javax.swing包中提供在功能上有更突出的表现:
1.Swing组件没有本地代码,实现了跨平台的显示外观。 2.Swing的组件除了有文本显示功能外,大多添加了图标显示。 3.可以通过调用方法等方式来改变Swing组件的外观。
因此,在JDK1.4以上,我们基本不再使用AWT包。
问题思考
• 如果在一个窗口里显示多个标签,那么这些标签 应该如何排列?
问题引入
如何编写具有windows界面的应用程序? 什么是图形用户界面(GUI-Graphics User Interface)? Java 通过什么支持GUI?
认识Java GUI程序
调试运行例题6-1
•JFram类支持图形用户界面的设计 与实现,通常我们编写的GUI应用程 序都要继承JFram类. •JFram类位于javax.swing包. •javax.swing包是Java平台上JFC (Java Foundation Classws)的 一部分,它提供开发GUI所需要的所 有组件。