跟我学JAVA / 第八课:图形界面设计

2018-03-09

本章我们将学到的知识点:

1、AWT简介  2、容器组件  3、布局管理器  4、常用组件

一、AWT简介

AWT(Abstract Window Toolkit/抽象窗口工具包)是API为Java程序提供的建立图形用户界面GUI(Graphics User Interface)工具集。

优点: AWT提供用于创建生动而高效的GUI的各种组件。 GUI以通过键盘或鼠标来响应用户的操作。

1、AWT主要又以下三个部分组成;

组件(Component):定义了所有的图形化界面元素及绘制方法,其中大多数组件是从抽象类Component派生而来。

容器(Containers):容器类用于包含组件,也可以包含容器以便统一操作和管理。 在容器中可以设定它所包含组件的布局方式 组件必须被包含到容器中

布局管理器(Layouts):用于规定用户接口的所有组件在屏幕上如何布置和怎样使界面作到与平台无关。

2、Component组件及其子类:

组件(Component):是Java的图形用户界面的最基本组成部分;是许多组件类的父类,Component类中封装了组件通用的方法和属性 。

getComponentAt(int x, int y)

getFont()

getForeground()

getName()

getSize()

paint(Graphics g)

repaint()

update()

setVisible(boolean b)

setSize(Dimension d)

setName(String name)

二、容 器 --Frame-1

Frame是Window的一个子类,是带有标题和缩放角的窗口。

1、Frame可以设置自己的标题、边框、菜单、大小等等 。

2、默认的Frame实例化对象都是没有大小和不可见的,必须调用setSize( )来设置大小,调用setVisible(true)来设置该窗口为可见的。

Frame的构造函数:

public Frame( )

public Frame(String title)

public Frame(GraphicsConfiguration gc)

public Frame(String title, GraphicsConfiguration gc)

Panel :面板是一个简单的容器类,用于容纳其他的组件或是面板。它有自己的布局管理器。

Panel必须放在Window或其子类才能显示出来。

构造函数:

Public Panel()

Public Panel(LayoutManager lg)

三、布局管理器主要包括:

流程布局FlowLayout

边框布局BorderLayout

网格布局GridLayout

卡布局CardLayout

网格包布局GridBagLayout

1、流程布局  FlowLayout-1

1、FlowLayout是Panel和Applet的缺省布局管理器。

2、组件的放置规律是从左到右、从上到下进行放置 。

3、容器大小改变时,组件大小不变,相对位置会发生变化。

构造函数

FlowLayout( );

FlowLayout(int align );

FlowLayout(int align, int hgap, int vgap );

参数说明:

缺省的对齐方式居中对齐,默认的组件横纵间隔都是5个像素

align :对齐方式left ,right ,center ,leading ,trailing

hgap: 水平间隔

vgap: 垂直间隔

2、网格布局 GridLayout-1

1、容器中组件呈网格状布局,平均占据容器的空间。 2、容器中各个组件同高同宽。 3、容器大小改变时,组件位置不变,大小改变。

//GridLayout构造函数:
public GridLayout( ) 
public GridLayout(int rows, int cols) 
public GridLayout(int rows, int cols, int hgap, int vgap)

参数说明: 默认情况下,每行一个组件。即只有一列。 rows指定行数,cols指定列数。 hgap: 水平间隔,单位像素。 vgap: 垂直间隔,单位像素。

3、边框布局 BorderLayout-1

1、BorderLayout是Window,Frame和Dialog的缺省布局管理器。

2、BorderLayout把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个组件。

3、容器大小变化时,组件相对位置不变,大小发生变化

4、如果四周没有组件,则由中间的组件来填充;如果中间没有组件,则空着。

//构造函数:
public BorderLayout( ) 
public BorderLayout(int hgap, int vgap) 

参数说明: Hgap: 水平间隔,单位像素 Vgap: 垂直间隔,单位像素 如果不制定间隔宽度,则组件间是彼此相邻的。

4、卡布局 CardLayout-1

1、容器分成许多层,每个组件都是重叠的。 2、每个组件占据整个容器的大小。 3、每层只允许放置一个组件 。 4、一次只显示一个组件。

//cardLayout构造函数:
public CardLayout() 
public CardLayout(int hgap, int vgap) 

参数说明 1、默认是无间隔的。 2、hgap 水平间隔,表示组件左右两边和容器的间隔,以像素为单位。 3、vgap 垂直间隔,表示组件上下两边和容器的间隔,以像素为单位。

5、网格包布局 GridBagLayout-1

 GridBagLayout提供了一种强大的控制能力,它包括精确判断视窗区域如何布局,以及视窗大小变化时候该如何重新设置组件。主要是为了辅助GUI构造工具自动生成代码。

//按钮(Button)
public Button() 
public Button(String label)
//如:
Button b1 = new Button();
Button okb = new Button(“OK”);

//标签(Label)
Public Label( )
Public Label(String text)
Public Label(String text,int alignmnet)
//如:
Label nameLabel = new Label(“姓名”);
Label sexLabel = new Label(“性别”,Label.CENTER);

//单行文本输入区(TextField)
public TextField( )
//创建一个空字符的输入框
public TextField(String text) 
//用指定的字符串创建一个输入框
public TextField(int colu)
//创建一个空的输入框,规定字符长度类似不超过 col指定的数字
public TextField(String text, int columns) 
//用指定的字符串创建一个输入框,规定字符长度类似不超过 col指定的数字。
//例如:
TextField t1 = new TextField(“name”,10);
TextField t2 = new TextField(“sex”);

转载于:https://www.cnblogs.com/Parker-YuPeng/articles/8533747.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、设计要求 设计一个模拟仿真“生产者-消费者”问题的解决过程及方法的程序。 主要内容是P、V操作过程的设计与实现。生产消费者问题是操作系统设计经常遇到的问题。多个生产者和消费者线程访问在共享内存的环形缓冲。生产者生产产品并将它放入环形缓冲,同时消费者从缓冲取出产品并消费。当缓冲区满时生产者阻塞并且当缓冲区有空时生产者又重新工作。类似的,消费者当缓冲区空时阻塞并且当缓冲区有产品时又重新工作。显然,生产者和消费者需要一种同步机制以协调它们的工作。 二、系统功能 本程序模拟实现了“生产者-消费者”问题的解决过程,用图形界面动态演示了P、V操作过程以及生产者、消费者进程之间的工作流程。 本程序使用的算法是典型的P、V操作使用信号量解决“生产者-消费者”问题。 本程序在界面上使用了Java的swing接口函数,用矩形条表示生产者进程待生产的产品,并设置了三个别表示生产者进程待生产的产品、公共缓冲池已生产的产品和消费者进程已消费的产品,以动画的效果动态演示了待生产产品变成消费者进程已消费产品的过程,以及在这一过程生产者进程和消费者进程协调工作的过程。在程序运行过程使用了两个生产者线程和两个消费者线程并发工作,并使用了线程随机休眠的策略,即每个线程在完成一次生产过程或消费过程后随机休眠1至10秒钟。这一策略能保证生产者和消费者之间的运行顺序被打破,从而产生生产产品和消费产品之间的矛盾(即没有产品可消费的情况下消费者试图向公共缓冲池取产品消费、公共缓冲池里的产品已满的情况下生产者试图生产产品放入缓冲池)。因为生产者生产产品和消费者消费产品都是随机的,所以产生的矛盾也是不可预知的,在这种情况下,才能检验所使用的算法是否健壮高效。而本程序正是基于这种思想设计出来的,用来模拟生产者消费者问题的解决过程。 本程序在运行时提供友好的交互界面,且操作简单,在模拟过程各种情况有相应文字提示,并伴有相应的图像变化,如:当没有产品可消费的情况下消费者试图向公共缓冲池取产品消费,消费者进程阻塞,公共缓冲池随之变成红色,文字提示框内显示warning: it's empty!Consumer is block;当缓冲池已满而生产者试图生产产品并向缓冲池放入产品时,生产者进程阻塞,公共缓冲池里的每一个产品变成黄色,问题提示框显示warning: it's full!Producer is block。整个模拟过程通俗易懂,利于理解,能很好的帮助使用者加强生产者消费者问题的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值