当前位置:文档之家› java图形用户界面设计教程

java图形用户界面设计教程

java图形用户界面设计教程
java图形用户界面设计教程

第4章图形用户界面设计

本章要点

● Java图形用户界面设计的基本知识

●布局管理器的应用

● Java常用图形用界面设计组件的应用

● Java常用组件事件处理的应用

4.1 认识AWT包和Swing包

用户界面是计算机用户与软件之间的交互接口。一个功能完善,使用方便的用户界面可以使软件的操作更加简单,使用户与程序之间的交互更加有效。因此图形用户界面(graphics user interface,GUI)的设计和开发已经成为软件开发中的一项重要的工作。

Java语言提供的开发图形用户界面(GUI)的功能包括AWT(Abstract Window Toolkit)和Swing两部分。这两部分功能由Java的两个包来完成-awt和swing。虽然这两个包都是用于图形用户界面的开发,但是它们不是同时被开发出来了。awt包是最早被开发出来的。但是使用awt包开发出来的图形用户界面并不完美,在使用上非常的不灵活。比如awt包所包含的组件,其外观是固定的,无法改变,这就使得开发出来的界面非常死板。这种设计是站在操作系统的角度开发图形用户界面,主要考虑的是程序与操作系统的兼容性。这样做的最大问题就是灵活性差,而且程序在运行时还会消耗很多系统资源。

由于awt包的不足表现,SUN公司于1998年针对它存在的问题,对其进行了扩展,开发出了Swing,即swing包。但是,SUN公司并没有让swing包完成替代awt包,而是让这两个包共同存在,互取所需。awt包虽然存在缺点,但是仍然有可用之处,比如在图形用户界面中用到的布局管理器、事件处理等依然采用的是awt包的内容。

Java有两个主要类库分别是Java包和Javax包。在Java包中存放的是Java语言的核心包。Javax包是Sun公司提供的一个扩展包,它是对原Java包的一些优化处理。

swing包由于是对awt包的扩展和优化,所以是存放在Javax包下的,而awt包是存放在Java包下的。虽然swing是扩展包,但是,现在的图形用户界面基本都是基于swing包开发的。

swing包的组件大部分是采用纯Java语言进行开发的,这就大大增加了组件的可操作性,尤其是组件的外观。通常情况下,只要通过改变所传递的参数的值,就可以改变组件的外观。而且swing包还提供Look and Feel功能,通过此功能可以动态改变外观。Swing包中也有一些组件不是用纯Java语言编写的,这些组件一般用于直接和操作系统进行交互的。

4.2 布局管理器

在本节中将对图形用户界面中的布局管理器进行介绍。

【任务1】认识图形用户界面。

1. 基础知识

先来看一个用Java语言编写的图形用户界面的例子,如图4-1所示。

图4-1 一个图形用户界面

图4-1是一个帮助文件的用户界面。通过这个界面,我们来介绍三个与图形用户界面有关的术语。

(1) 组件:构成图形用户界面的各种元素称为组件。图4-1中,放在“帮助窗口”中的每个一信息都是一个组件。例如“确定”按钮就是一种组件。

(2) 容器:是图形用户界面中容纳组件的部分,一个容器可容纳一个或多个组件,甚至可以容纳其他容器。窗口就是一种容器。例如图4-1中的组件全部都是放在“帮助窗口”这个容器中的。容器与组件的的关系就像杯子和水的关系。需要说明的是,容器也可以被称为组件。

(3) 布局管理器:组件在被放到容器中时,要遵循一定的布局方式。在Java的图形用户界面中,有专门的类来管理组件的布局,称这些类为布局管理器。在“帮助窗口”中每一条信息都是一个组件,这些组件应该如何安排就是由布局管理器负责的。所谓的布局管理器,实际上就是能够对组件进行布局管理的类。

用吃饭的例子就能很好的说明这三个术语之间的关系。容器就是吃饭的桌子,组件就是一盘盘的菜。我们放菜的时候总要安排一下哪个菜应该放在什么位置,这就是布局管理器。

2. 任务实施

3. 分析与提高

(1) 第1行和第2行的作用就是将awt包和swing包引入到该程序中,因为该程序中要用到awt包和swing包中的类。例如第8行用到的Container类和第9行的GridLayout类都属于awt包。其他以“J”开头的类都属于swing包。这样做的目的很容易理解。例如,Containe 类是Java语言的开发者事先定义好的类。关于这个类的一些功能也是设定好的。作为使用者,只要将这个类用import的方式引入到自己的程序中就可以使用它了。这两个包的引用会在图形用户界面的程序中经常用到。

(2) 第7行定义的是一个窗口。第8行是开发图形用户界面必须要用到的类,这个类的作用会在后面的章节进行更详细的解释。

(3) 第9行是对窗口进行了布局管理器设置,通过GridLayout布局管理器,将窗口划分成5行,1列。

(4) 第10行至第13行定义了窗口要显示的信息。

(5) 第14行定义了“确定”按钮。

(6) 第15至第19行是将定义好的组件放入到窗口中。

(7) 第20行定义了窗口的初始大小。

(8) 第21行定义了窗口的可显示性。

(9) 第24行和第25行是FrameEx类的对象,并通过这个对象调用go()方法,使这个帮助窗口运行起来。

在此只对程序进行粗略解释,目的只是让读者对图形用户界面有个初步的认识。在后面的任务中会逐个对各种组件和它们的应用进行详细介绍。

4.2.1 FlowLayout布局管理器应用

【任务2】认识FlowLayout布局管理器。

1. 基础知识

FlowLayout是一个最简单的布局管理器,这个布局管理器的功能就是将容器中的组件从左到右,从上到下的排列。因此,它又被称为流布局管理器。例如图4-1中,帮助窗口共有五个组件。它们在窗口中的排列方式是5行,1列。如果采用FlowLayut布局管理器,那

么窗口的执行结果应该是图4-2的样式。所有组件是按照添加时的顺序,按从左到右,从上到下的顺序排列的。默认情况下,第一个被添加的组件摆放在第1行居中位置,其后添加的组件摆放在第一个组件的后面。当第1行再也放不下组件的时候,其后的组件从第2行开始从左到右摆放。以此类推,直到添加完所有组件。

图4-2 FlowLayout布局管理器

2. 任务实施

任务1中的第9行就是对窗口布局的设置语句。语句如下:

contentPane.setLayout(new GridLayout(5,1));

只要对这一行进行更改,就可以达到应用FLowLayout布局管理器的目的。

contentPane是一个对象,它指向的是Container类。关于这个类的含义和作用会在以后的章节中详细讲解。读者暂时只需要知道contentPane引用是指向所建立的“帮助窗口”就可以了。

从contentPane所调用的setLayout()方法的方法名的含义就可以知道这个方法的作用—设置(set)布局(layout)。通过对这个方法的参数赋予不同布局管理器的引用,达到对窗口进行布局设置的目的。

要实现将“帮助窗口”的布局管理器设置为FlowLayout,只需要做如下的更改。

contentPane.setLayout(new FlowLayout());

其中的参数new FlowLayout()实际上是FlowLayout类的一个引用。这条语句的含义就是:将contentPane所指向窗口的布局管理器设置成FlowLayout。

还有另外一种设置布局管理器的方法。如下语句所示。

语句1:FlowLayout flow= new FlowLayout();

语句2:contentPane.setLayout(flow);

语句1创建了FlowLayout布局管理器的引用。语句2将语句1所创建的flow引用作为参数传递给setLayout ()方法。

flow引用等价于new FlowLayout()。因此,语句contentPane.setLayout(new FlowLayout())实际上是语句1和语句2的组合写法。

3. 分析与提高

FlowLayout布局管理器是Panel和Applet容器的默认局管理器。如果不专门对Panel和Applet进行布局管理器设置的话,它们的组件的布局将按FlowLayout进行管理。Panel和Applet都是一种容器。Panel和窗口很类似,Applet是嵌在浏览器中使用的一种客容器。这两个容器会在后面的章节中介绍。

FlowLayout布局管理器对窗口中的组件的管理是与窗口的大小有关的。在任务1中有如下的语句:

win.setSize(200,200);

这条语句设置了窗口的初始值大小。第一个参数为窗口的宽度,第二个参数为窗口的高度。FlowLayout布局管理器会根据这个大小来摆放组件。如果我们使用拖动的方法,改变窗口的大小,窗口中组件的排列方式也会跟着改变。

每个组件也有自己的初始大小。当窗口设置的宽度小于组件的初始宽度时,窗口宽度会自动变为组件的宽度,但窗口高度不会改变。

在摆放组件时,如果不设定组件的对齐方式,那么FlowLayout布局管理器是按居中对齐的方式摆放组件的。也可以通过向FlowLayout构造方法传递参数的方式设置所需的对齐方式。FlowLayout布局管理器的对齐方式有:FlowLayout.CENTER、FlowLaout.TRAILING 和FlowLayout.LEADING。分别表示居中对齐、右对齐和左对齐。

设置的方法如下面的语句所示:

contentPane.setLayout(new FlowLayout(FlowLayout.LEADING));

这语句可以将组件的对齐方式设置为左对齐

还可以设置组件之间的水平和垂直间距。

设置的方法如下面的语句所示:

contentPane.setLayout(new FlowLayout(FlowLayout.LEADING , 50 , 50));

这条语句的含义就是将组件间的水平和垂直间距都设置为50。

4.2.2 BorderLayout布局管理器应用

【任务3】认识BorderLayout布局管理器。

1. 基础知识

BorderLayout又称边界布局管理器,它将窗口划分为上北、下南、左西、右东和中央五个区域,分别用参数BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.EAST和BorderLayout.CENTER来表示。在窗口中添加组件时,系统会根据参数将组件摆放到窗口的相应位置。如图4-3所示。

图4-3 BorderLayout布局管理器

如果某个区域没有摆放组件,则其他组件会占用此位置。规则如下:

当上北或下南没有摆放组件时,左西、右东和中央的组件会占用上北或下南的位置。

当左西或右东没有摆放组件时,上北、下南和中央的组件会占用左西或右东的位置。

当上北、下南、左西和右东都没有摆放组件时,中央的组件会占用这些位置。

当中央位置没有摆放组件时,位置被空缺,其他位置的组件不会占用中央的位置。

2. 任务实施

通过setLayout()方法可以完成BorderLayout布局管理器的设置,语句如下:contentPane.setLayout(new BorderLayout());

在添加组件时,要对组件摆放的位置进行说明。语句如下:

contentPane.add(queding,BorderLayout.CENTER);

此语句的含义是将queding按钮摆放在窗口的中央位置。

如果在添加组件时不进行位置说明,系统则默认将组件放在中央位置的。当添加的组件大于一个时,只有最后添加的组件被显示。

3. 分析与提高

BorderLayout是Frame容器的默认布局管理器。当Frame容器中没有指定布局管理器时,系统就会默认采用BorderLayout布局管理器。

采用BorderLayout布局管理器还可以设置组件之间的间距。格式如下:

new BorderLayout(int hGap,int vGap);

参数hGap和vGap分别表示组件之间的水平间距和垂直间距。如果不指定组件间的间距,则组件之间没有间距。

指定组件位置还有另外一组参数值,分别是BorderLayout.PAGE_START、BorderLayout.PAGE_END、BorderLayout.LINE_START、BorderLayout.LINE_END和BorderLayout.CENTER。这两组参数的对应关系如表4-1表示。

表4-1 两组位置参数对照表

这两组参数在使用时没有区别,读者可以根据习惯使用。参数组1相对参数组2要好记忆一些。

4.2.3 GridLayout布局管理器应用

【任务4】认识GridLayout布局管理器。

1. 基础知识

GridLayout又称网格布局管理器。相对于FlowLayout和BorderLayout来说,GridLayout 布局管理器是比较灵活的一种管理器。它可以通过行数和列数的设置,把窗口划分成若干个单元格,将组件放在这些单元格里。任务1中采用的就是这种布局管理器。

2. 任务实施

任务1将窗口设置为5行1列的表格,各个组件分别放在这个表格中的五个单元格中。这种布局的设置通过语句contentPane.setLayout(new GridLayout(5,1))实现的。

GridLayout的括号中两个参数的含义就是(行数,列数)。通过改变这两个参数的值,将窗口划分成不同的单元格。

3. 分析与提高

GridLayout布局管理器也可以不设置行数和列数,这时系统会默认行数和列数均为1。GridLayout布局管理器同样可以对组件之间的间距进行设置。格式如下:

new GridLayout(int rows,int columns,int hGap,int vGap)

rows和columns分别表示行数和列数。hGap和vGap分别表示组件之间的水平间距和垂直间距。

如果要摆放的组件大于GridLayout所设置的单元格个数,多出来的组件也会被摆放在窗口中,但是会破坏原来的单元格样式。

4.2.4 自定义布局管理器的应用

【任务5】认识自定义布局管理器。

1. 基础知识

FlowLayout、BoderLayout和GridLayout布局管理器有一个共同的特点就是布局是固定的。因此组件的摆放也就被固化了。比如BorderLayout只能把组件摆放在五个区域内,不可能有第六个区域。然后有很多界面中的组件摆放非常灵活。虽然GridLayout可以将窗口设置成不同的单元格,但是碰到组件摆放没有规律可寻的情况时,也会无能为力。有时候,为了达到窗口中组件的不规则摆放,需要对这三种布局管理器进行综合应用,实现起来非常麻烦。于是,Java就提供了一种不使用布局管理器的方法,即自定义布局。

这种方法的理念是这样的:所有图形用户界面都是平面的,界面上的每个点都可以用x 和y两个坐标来确定。在一个界面上如果选取一个点,再确定好要摆放组件的宽度和高度,就可以确定出一个区域。如图4-4所示。

图4-4 一个平面中两点坐标确定一个区域

(10,30)是起始坐标。80和40是组件的宽度和高度,从而确定出一个区域,就可以把一个组件放在这个区域中。这样的布局方式就非常灵活,可以根据需要在窗口的任意位置摆放组件。事先只要给每个组件在窗口中确定一个摆放的位置就可以了。这时的布局不是针对窗口的了,而是针对每一个组件。例如,一个“确定”按钮。我们给它起个名字叫button。下面的语句就可以在窗口中设置出用于摆放该按钮的区域。

button.setBounds(10,30,80,40);

setBounds是设置(set)边界(bound)的意思。因此这条语句的含义就是将宽度为80,高度为40的button放在以坐标(10,30)为起始点的区域中。

2. 任务实施

这段代码是对任务1的代码进行了部分修改得出的。只保留任务1中的“确定”按钮组件,并利用自定义布局方式将这个按钮摆放在窗口中。

3. 分析与提高

(1) 第9行将窗口的布局管理器设置为null。意思就是这个窗口不使用布局管理器。既然要应用自定义的布局,就应该将容器原有的布局管理器去掉。虽然我们可以不进行布局管理器设置,但是每种容器都有默认的布局管理器,因此,必须将这种默认值去掉,自定义的布局才能发挥作用。比如这段程序采用是JFrame容器,这种容器属于Frame容器。Frame 容器的默认布局管理器是BorderLayout。必须通过第9行的方法,使BorderLayout布局管理器不起作用,才能达到自定义布局的效果。

(2) 第11行设置了“确定”按钮在窗口中的坐标位置。其中前两组参数表示按钮左上角的坐标,后两组参数确定了组件的宽度和高度。

(3) 第12行将“确定”按钮添加到窗口时,会按照第11行确定的区域进行摆放。需要注意的是,组件的宽度和高度要设计得合理,否则,可能会使组件不能完全显示或者出现显示变形。

4.3 常用组件和事件处理

这一节将介绍一些在设计图形用户界面时常用的组件,以及与这些组件有关的事件处理。

4.3.1 学习JFrame和JPanel的使用

JFrame和JPanel都属于swing包下的类,它们都是容器组件。Swing对AWT进行了扩展,增加了awt包下组件的功能,为了与原来组件进行区别,在swing包下的所有组件名称

都在原来名字的前面加了一个“J”。因此,在Java的图形用户界面中,以“J”为首字母的组件都归属于swing包。在awt包下有Frame和Panel组件,JFrame和JPanel就是对它们进行扩展得到的。

【任务6】利用JFrame组件建立一个窗口。

1. 基础知识

JFrame是Java图形用户界面中最底层的容器之一。前面的章节中,曾用吃饭的例子来比喻容器,组件和布局管理器之间的关系。JFrame就相当于“桌子”,它可以用来容纳用户界面中的所有组件。

JFrame在图形用户界面中的表现形式就是窗口。

通过JFrame创建窗口的常用方式有两种:

方式一:JFrame 对象名= new JFrame();

方式二:JFrame 对象名= new JFrame(String s);

窗口在标题栏部分都会显示其提示性信息,以表明这个窗口的作用。方法二可以实现这一功能。其中String s就是用于存放标题栏要显示的信息的参数。

语句JFrame win = new JFrame(“帮助窗口”)的含义是:创建名字为win的JFrame窗口,标题栏要显示的信息为“帮助窗口”。

用方式一创建的窗口,标题栏内容为空。

JFrame类包括一些方法,这些方法帮助我们完成与窗口有关的操作。

(1) 设置窗口大小的方法

pack()和setSize(w,h)都可以用于控制窗口的大小。pack()方法会根据所容纳的组件自定义窗口的大小。setSize(w,h)方法设置的窗口大小是固定的,不受组件的影响。如果设置的窗口小于组件大小,会出现部分组件不能显示的情况。这种情况在使用pakc()方法时不会出现。

以上两种方法设置的窗口默认显示在屏幕的左上角。如果要改变初始显示的位置就要用setBounds(x,y,w,h)方法。这个方法不但可以设置窗口的大小,而且可以设置窗口在屏幕上显示的位置。其中x和y是设置窗口在屏幕上显示的起始坐标,w和h是设置窗口的大小。

(2) 标题设置方法

通过setTitle(String s)方法可以设置窗口的标题。例如,win.setTitle(“提示信息”),这条语句可以将win所指向的窗口标题设置为“提示信息”。

(3) 设置窗口前景色和背景色方法

方法setForeground(Color c)用于设置窗口前景色。方法setBackground(Color c)用于设置窗口背景色。这两个方法的参数都是颜色参数,Color是专门用于处理颜色的类。

下面的语句是将win指向的窗口背景色设置为蓝色。

win.setBackground(Color.blue);

(4) 显示窗口方法

对窗口进行各种设置后,需要执行setVisible(boolean b)方法,将窗口显示在屏幕上。其中的参数是布尔值。当参数值为true时,显示窗口;当参数值为false时,不显示窗口。show()方法也可以实现显示窗口的功能,它与setVisible(boolean b)方法在应用上没有区别。

2. 任务实施

这段程序的执行结果如图4-5所示。

图4-5 不包含组件的窗口

3. 分析与提高

(1) 第1行和第2行是引用语句。

(2) 第7行是最关键的。JFrame win = new JFrame("帮助窗口"); 它创建了一个名字为win,标题为“帮助窗口”的窗口。

(3) 第8行win.setSize(200,200)的作用就是设置这个窗口有多大,参数的含义是(宽度,高度)。这句话的含义就是将win这个窗口的大小(size)设置(set)为宽200,高200。

(4) 第9行和第10行被注释掉的。这两条语句同样是用于设置窗口大小。读者自行实验,尝试采用三种窗口大小设置方法的不同。

(5) 第11行win.setVisible(true)中,setVisible的含义就是设置(set)显示(visible)状态。显示状态只有两种:显示(true)和不显示(false)。所以第11行的含义就是将win窗口的显示状态设置为显示。只有参数是true的时候,才会看到图4-5的窗口。

(6) 第12行被注释掉的语句,这条语句同第11行的作用一样,用于显示窗口。

【任务7】在窗口中加入JPanel容器,将窗口划分成两个区域。

1. 基础知识

(1) JPanel的应用与JFrame几乎完全一样,JFrame能容纳的组件都能摆放在JPanel容器中。在布局管理器的应用上也是一样的。但是不同的是JFrame可以独立应用,而JPanel只能依附于JFrame才能应用。也就是说,如果想应用JPanel的话,之前必须有一个JFrame 建立的容器存在,才可以在这个已经存在的容器上再应用JPanel。

(2) JPanel是隐性显示的。它并不像JFrame建立的窗口那样可以显示出来。利用这一特点,就可以在JFrame建立的窗口上应用若干个JPanel,把JFrame制作出来的容器划分成若干个区域,每个区域都可以独立应用。这样做的目的显而易见。如果在JFrame制作出来的窗口中只用到一种布局管理器,是没有必要再用JPanel的,但是如果要在一个窗口中以不同的布局方式摆放组件,就要用到JPanel了。因为JPanel可以独立应用,就可以让一个窗口具有更多的布局方式,使窗口的组件摆放更加灵活。

(3) 创建JPanel的常用方式有两种。

(4) 方式一:JPanel 对象名= new JPanel();

(5) 方式二:JPanel 对象名= new JPanel(布局管理器);

(6) 应用方式二创建JPanel时,同时就可以设置它的布局管理器。如下面的语句:JPanel jp = new JPanel(new FlowLayout());

2. 任务实施

和jpTwo容器占用。之所以看不出变化,是因为JPanel是隐性显示的。

图4-6更加详尽的说明了JPanel的应用情况。窗口应用了两个JPanel,划分出两个区域,上面的区域应用了GridLayout布局管理器,把这个区域划分成了两行两列。下面的区域应用了BorderLayout布局处理器。

图4-6 应用了JPanel的窗口

3. 分析与提高

(1) 第8行和第9行创建了两个JPanel容器。

(2) 第10行利用GridLayout布局管理器将窗口划分成2行1列。准备摆放两个JPanel 容器。

(3) 第11行和第12行将两个JPanel容器放入窗口中。

4.3.2 使用标签、按钮、复选框和单选框表组件制作调查问卷

在本节中上,在前面任务所学知识的基础上,结合本节的新知识,通过4个任务来完成一个调查问卷程序。

【任务8】设计调查问卷的布局,并加入一个醒目的标题。

1. 基础知识

在窗口中经常会出现一些说明或提示性的信息,这些信息大多是文字,有时候也可能是图片。Java不允许将方字或图片直接显示在容器中。这些文字或图片性质的信息要借助组件显示在窗口中。能够实现这一功能的组件被称做标签。任务中提到的“标题”实际上就是调查问卷的“卷头”,它就可以用标签来实现。

JLabel是swing包中专门创建标签组件的类。

创建标签的方式有几种,这里只介绍常用的四种。

方式一:JLabel 对象名= new Jlabel(String s);

方式二:JLabel 对象名= new Jlabel(String s,int hAlignment);

方式三:JLabel 对象名= new Jlabel(ImageIcon image);

方式四:JLabel 对象名= new Jlabel(ImageIcon image,int hAlignment);

方式一和方式二是显示文字性信息时应用的标签。参数s用于存放要显示的信息,参数hAlignment是设置所显示的信息的对齐方式。共有五种对齐方式:JLabel.BOTTOM、JLabel.LEFT、JLabel.RIGHT、JLabel.TOP和JLabel.CENTER,分别表示底端对齐、左对齐、右对齐、顶端对齐和居中对齐。采用方式一创建的标签,文字的对齐方式默认为左对齐。

方式三和方式四是显示图片信息时应用的标签。参数image 是图片对象的引用。ImageIcon 是Java 处理图片的类。hAlignment 是设置所显示的图片的对齐方式。也有五种,同文字采用的对齐式一样。采用方式三创建的标签,图片的对齐方式默认为左对齐。

2. 任务实施

首先要为这个调查问题设计一个布局。如图4-7所示。

图4-7 调查问卷布局

这种布局设计与BorderLayout 布局管理器所对应的布局形式有些接近。如图4-8所示。

图4-8 BorderLayout 布局管理器布局形式

调查问卷的标题部分可以放在“North ”,调查问卷内容部分放在“Center ”,提交按钮可以放在 “South ”。“West ”和“East ”舍弃不用。有的读者可能会想到用GridLayout 布局管理器。从调查问卷的布局设计来看,是典型的n 行1列。但是,用BorderLayout 布局管理器的显示效果要好于GridLayout 布局管理器。

布局设计好后,就要解决如何加入一个标题的问题。将调查问卷的标题设计成“基本情况调查表”的字符串。加入到窗口后的效果如图4-9所示。

图4-9 添加了标签的调查问卷

3. 分析与提高

(1) 第5行要特别说明一下,这条语句将在以后的大部分程序中出现。Java在处理图形用户界面时,并不是将组件直接摆放在JFrame容器中,而是在JFrame容器上再加一个隐性层,组件是放在这个隐性层上的。这个隐性层是由Container类创建的。这个类归属于awt 包。这个隐性层采用第5行的形式创建,其中contentPane就是这个隐性层的引用。

前面的章节曾用吃饭的例子来说明容器、组件和布局管理器三者之间的关系,却没有提到隐性层。这个隐性层相当于“桌布”的作用。为桌子加桌布的原因是要保护桌子,而为窗口加“桌布”的原因是为了要实现更多的功能。因为Container包含很多功能,这些功能JFrame 不具备。

这样一来,JFrame创建了一个窗口(桌子),然后,通过第5行来为这个窗口加上隐性层(桌布)。所有的组件(菜)都是放在这张“桌布”上的。布局管理器也是针对这张“桌布”设置的。

那么,窗口的大小和窗口显示属性是不是也要对这张“桌布”进行操作呢?这实际上不是这样的。

这两个设置还是直接对窗口来操作。这用吃饭的例子还是可以讲得通的。设置“桌布”

的大小有什么意义呢?桌子(窗口)的大小才是决定能放下多少菜(组件)的关键。因为“桌布”只是一个附属品,它随着桌子(窗口)的存在而存在。

(2) 第6行就是这个任务的关键所在。这一行创建了一个标签,标签的名字为questionTest。将“基本情况调查表”作为标签的内容,并居中对齐。

(3) 第8行将containPane指向的隐性层,即“桌布”的布局管理器设置为BorderLayout。

(4) 第9行是将questionTest标签加入到窗口的上北位置。

【任务9】在调查问卷中加入个人体育爱好的调查项。

1. 基础知识

一个人的体育爱好可能有一种,也可能是多种,因此,这部分调查内容应该是可以多选的。复选框组件可以帮助我们完成这一任务。复选框的主要功能就是使用户可以进行多项选择。负责复选框功能的类是JCheckBox。

常用的创建复选框方式有如下几种:

方式一:JCheckBox 对象名= new JCheckBox(String s);

方式二:JCheckBox 对象名= new JCheckBox(String s,boolean b);

方式三:JCheckBox 对象名= new JCheckBox(ImageIcon image);

方式四:JCheckBox 对象名= new JCheckBox(ImageIcon image,boolean b);

方式一和方式二创建的复选框显示的信息是字符串。其中参数s用于存放显示的字符串。方式二中的参数b是说明创建的复选框是否为默认选中。如下面语句:JCheckBox c1 = new JCheckBox("足球",true)

这种方式的显示结果为,参数中的“true”是表明这个选项是默认选项。如果去掉这个参数,即JCheckBox c1 = new JCheckBox("足球"),那么显示的结果为。

方式三和方式四创建的复选框显示的信息是图片。其中参数image是图片的引用。方式四中的参数b同方式三中的参数b作用相同。

2. 任务实施

我们要将这部分调查内容放在窗口的“Center”部分。因为,调查项不只一项,所以,要事先安排“Center”部分的布局格式,才能将这些调查项逐一摆放。

如果要对“Center”部分进行布局设置,就必须在此处加入一个容器。这时就用到任务7中讲到的JPanel了。将这个用JPanel建立的容器命名为“p”,并将其布局管理局设置为GridLayout。这样,只要根据调查项的条数来设置GridLayout的行数就可以了,而列数肯定是1。

因为每一个调查项都由调查的问题和复选框组成,所以也存在布局的问题。处理方法就是为每一个调查项也创建一个JPanel容器,布局管理器同样设置为GridLayout型。调查项容器命名为“p1”,其他调查项容器依次命名为“p2”,“p3”……

布局设计好后,就要将调查项加入到窗口的“Center”部分。添加复选框后的窗口效果如图4-10所示。

图4-10 加入调查项后的窗口

从图4-10可以看出,关于体育运动的调查项实际由一个标签和三个复选框组成。程序源代码如下:

3. 分析与提高

(1) 第7行创建的标签是调查项的问题

(2) 第8行至第10行创建了三个复选框,其中“足球”项为默认选项。

(3) 第11行和第12行分别创建了用于“Center”部分的JPanel容器p和用于摆放调查项的JPanel容器p1。

(4) 第15行是注释行,这一行的作用是设置p的布局管理器为GridLayout。目前只有一个调查项,还不能确定最终会有几个调查项,所以不能确定到底要用到几行,因此,这行被注释掉,等确定好共有几个调查项后,再把注释取消。

(5) 第16行设置了“p1”的布局管理器为GridLayout,并设置为4行1列。第1行用于摆放调查项问题,其他3行用于摆放复选框。

(6) 第17行和第18行是把内容为“1、喜欢的体育运动:”的标签和三个复选框加入到p1容器中。

(7) 第19行是将含有调查项内容的p1容器加入到p容器中。

(8) 第21行是将p容器加入到窗口的“Center”部分。

【任务10】在调查问卷中,加入关于被调查人性别的调查项。

1. 基础知识

单选框就是只能选择选项中的一个。性别选项恰恰就可以用单选框来实现。JRadioButton 是专门处理单选框的类。

常用的创建单选框方式有如下几种:

方式一:JRadioButton 对象名= new JRadioButton(String s);

方式二:JRadioButton 对象名= new JRadioButton(String s,boolean b);

方式三:JRadioButton 对象名= new JRadioButton(ImageIcon image);

方式四:JRadioButton 对象名= new JRadioButton(ImageIcon image,boolean b);

创建单选框的这四种方式与创建复选框的方式含义基本一样,所以不再进行解释了。

下面的语句是采用方式二创建一个单选框。

JRadioButton r1 = new JRadioButton("男",true);

参数中的“true”是表明这个选项是默认选项。这句话的结果显示为,如果去掉“true”参数,显示结果为。

与复选框不同的是,无论有多少选项,只能有一个选项被选中。因此,单选框要有另外一个类的配合,才能达到“单选”目的。这个类是ButtonGroup。

对于单选框只能选择其中的一项的特性,Java实际上是这样操作的:若干个选项组成一组,在这一组中只能选择一个选项。这个将若干选项划定为一组的工作就由ButtonGroup类来完成。它的创建方式为ButtonGroup 对象名= new ButtonGroup()。

比如有r1和r2两个单选框,利用下面的语句,就可以将这两个单选框划定为一组。

ButtonGroup对象名.add(r1);

ButtonGroup对象名.add(r2);

这样一来,系统就认定r1和r2是属于一组,在进行操作时,只能有一个选项被选中。

2. 任务实施

在布局的设计方面,任务9已经说的很清楚。新的调查项的布局方式按照上一个调查项的布局进行设计就可以了。因为要加入新的调查项,所以容器p的布局应该为2行1列。如图4-11所示。

图4-11 加入“性别”调查项后的窗口

3. 分析与提高

(1) 第12行创建了与单选框配合使用的类的对象bgroup,用于划定单选框组。

(2) 第13行和第14行创建了两个单选框。其中,第13行创建的单选框为默认选项。

(3) 第17行创建了用于加载“性别”调查项的容器p2。

(4) 第20行设置了p的布局管理器为GridLayout型,并划分为2行1列。

(5) 第22行设置了p2的布局管理器为GridLayout型,并划分为3行1列。

(6) 第23行将r1和r2单选框加入到名字为bgroup的组中。

(7) 第26行和第27行是把内容为“2、性别:”的标签和两个单选框加入到p2容器中。

(8) 第29行将加载了两个调查项的p1和p2容器加入到p容器中。

【任务11】在调查问卷中加入“提交”按钮。

1. 基础知识

按钮是图形用户界面中最常用的组件。Swing用JButton类来创建按钮。按钮可以用如下两种方式创建。

方式一:JButton 对象名= new JButton(String s);

方式二:JButton 对象名= new JButton(ImageIcon image);

方式一创建的按钮显示的信息是文字。方式二创建的按钮显示的信息是图片。

下面的语句创建了一个提交按钮:

JButton tiJiao = new JButton(“提交”);

这条语句的显示效果为。

2. 任务实施

在任务8中已经说明,提交按钮要放置在窗口的“South”部分。但是如果直接将按钮摆放在“Sourth”部分,显示的效果如图4-12所示。

图4-12 直接摆放“提交”按钮的窗口

显然,直接摆放的做法使得显示效果很不理想。如果想改变这种效果就必须创建一个JPanel容器,将按钮放入容器中,然后将容器放到窗口的“South”部分。JPanel的默认布局管理器是FlowLayout,这个布局管理器默认的对齐方式是居中对齐。所以,只要采用JPanel 的默认布局管理器,就可以使“提交”按钮在窗口下端居中显示。添加“提交”按钮后的窗口效果如图4-13所示。

图4-13 加入“提交”按钮后的窗口

用户界面设计说明书样本

用户界面设计说明 书

[键入公司名称] [键入文档标题] [键入文档副标题] [键入作者姓名] 2012/11/27

修订历史记录

目录 1 引言................................................... - 3 - 1.1编写目的............................................ - 3 - 1.2项目背景............................................ - 4 - 1.3定义、缩略词........................................ - 4 - 1.4参考资料............................................ - 5 - 2 应当遵循的界面设计规范 ................................. - 5 - 2.1用户界面设计原则.................................... - 5 - 2.2界面一致性.......................................... - 5 - 2.3布局合理化原则.......................... 错误!未定义书签。 3 界面的关系图和工作流程图 ............................... - 7 - 4 主界面................................................ - 10 - 4.1主界面............................................. - 10 - 4.2子界面A ........................................... - 11 - 4.3子界面B ........................................... - 12 - 4.4子界面C ........................................... - 13 - 4.5子界面D ........................................... - 14 - 4.6子界面E ........................................... - 15 - 4.7子界面F ........................................... - 16 - 5 美学设计.............................................. - 17 -

java图形用户界面设计

实验名称:图形用户界面设计 一、实验目的 1.掌握常用图形界面组件(按钮、文本框等)对象的创建及其常用方法的使用。如,按钮的常用方法是getLabel(),文本框的常用方法有setText(),getText()等。 2.掌握常用的布局管理类CardLayou,BorderLayout,FlowLayout,GridLayout的使用策略。能够将它们联合起来使用。 3.掌握java语言的事件处理。每个事件对应的接口(或适配器类)是什么,每个接口有哪些方法,如何进行委托处理,被委托者必须做什么。 二、实验环境(软件、硬件环境) PC机 JDK包 三、实验原理 通过图形用户界面(GUI),用户和程序之间可以方便地进行交互。javax.swing包中的组件类可以帮助我们完整界面的设计。javax.swing包的JComponent类是java.awt包中的Container类的一个直接子类、Component类的间接子类。javax.swing包中的JFrame类和JDialog类分别是java.awt包中Frame类和Dialog类的直接子类、Window类的间接子类。在学习GUI编程时,必须很好地理解并掌握两个概念:容器类和组件类,必须很好地掌握java的事件处理机制。 四、实验容及步骤 实验容:密码验证问题。 编写一个Java程序,实现用户根据自己的密码进入界面,如果用户输入信息正确,则输出“欢迎XXX用户”,否则用户还可以尝试两次,如果尝试阶段输入信息错误,则输出“请输入正确的信息”,如果尝试失败,用户则退出。 调试并编译程序PasswordVerification.java,运行该程序,运行结果如图8-1、图8-2、

java菜单和工具栏界面代码设计

实验八菜单和工具栏 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class c extends JFrame{ private JMenuBar menuBar; private JMenu xtMenu,xyMenu,zyMenu,xsMenu,kcMenu,cjMenu,jsMenu;// private JMenuItem aItem,bItem,cItem,dItem; // private JMenuItem eItem,fItem,gItem,hItem; private JMenuItem iItem,jItem,kItem,lItem; private JMenuItem mItem,nItem,oItem,pItem; private JMenuItem qItem,rItem,sItem,tItem; private JMenuItem uItem,vItem,wItem,xItem; private JMenuItem yItem,zItem,aaItem,bbItem; public c(String account){ setTitle("学生管理系统"+"当前管理员为"+account); setSize(500,400); center(this);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); createMenu(); showToolBar(); setVisible(true); } //caidan public void createMenu(){ menuBar=new JMenuBar();//创建菜单栏 xtMenu=new JMenu("系统管理"); aItem=new JMenuItem("学院设置"); bItem=new JMenuItem("专业设置"); cItem=new JMenuItem("修改密码"); dItem=new JMenuItem("退出"); //dItem.setMnemonic('Q'); xtMenu.add(aItem); xtMenu.add(bItem); xtMenu.addSeparator(); xtMenu.add(cItem); xtMenu.addSeparator();

界面设计风格

界面设计规范 1.引言 (2) 1.1概述 (2) 1.2信息位置的安排原则 (2) 2.规范基本规定 (4) 2.1环境 (4) 2.2文字与颜色 (4) 2.3数据格式与显示 (4) 2.4 键盘控制与无鼠标操作 (4) 3.窗口控件 (5) 3.1 MDI与SDI (5) 3.2 快闪窗口(SPLASH) (6) 3.3 登录窗口(LOGIN) (7) 3.4关于窗口(ABOUT) (8) 3.5 响应窗口(RESPONSE) (8) 3.6 系统主窗口 (9) 3.7 业务办理类窗口 (10) 3.8 数据查询类窗口 (12) 4.数据窗口控件 (14) 5.菜单控件 (17) 6. 按钮控件 (17) 7. 输入域 (17) 8. 帮助 (17)

1.引言 用户界面是应用系统的外在表现,是用户工作的接口,它的质量会直接影响系统的友好性与可用性。 本规范用于说明进行管理信息系统(MIS)设计开发时,所应遵循的用户界面开发规范,旨在描述设计怎样的界面风格,为用户所接收。该规范主要针对PowerBuilder开发工具的进行设计。由于PowerBuilde所倡导并提供的风格是基于图形化用户界面GUI的,是与Windows的界面风格相一致的,因此该规范同样可以适用于其他的前台开发工具。 系统界面如果采用WEB页面的方式,则设计原则另行规定。 规范中未做声明的内容,以满足开发总则为准。 1.1概述 有资料调查结果显示,用户希望的最佳屏幕特点为: ●一个规整、清晰、毫不混乱的外观。 ●对于将要显示的内容以及对其将进行的操作有一个明确的提示。 ●所希望的信息出现在其应该出现的位置。 ●清楚地指明标题、小标题、数据、指示、选择等各种项目的关系。 ●平白、简单的文字。 ●通过简单的途径找到系统所含内容及得到它的方法。 ●明确地指出什么时候某个操作能引起数据或系统运行的永久性改变 这样就要求我们所设计的用户界面,应满足如下基本要求: *充分性:用户界面应充分满足功能要求 *一致性:用户界面应满足一致性要求,包括本模块内与分系统之间 *简洁性:用户界面在满足功能的前提下应尽量保持简洁 *合理性:用户界面的布局与设置应满足合理的功能要求 美观性:用户界面应满足美观性要求 1.2信息位置的安排原则 1.在屏幕左上角提供明显的起动点。 2.在屏幕上为诸如菜单、按钮、错误信息、标题、数据区等特定信息保留特定的区域, 并使这些区域在所有屏幕上保持一致。 3.对各种区域的编排应保持均衡、规整、对称、简明、比例协调、整体性。 ●屏幕标题位于上中部,有利于产生对称感;菜单置于屏幕顶部,仅在标题 之下;按钮置于屏幕底部,在信息区之下。

java实验报告实验六Java图形用户界面

信息工程学院 Java程序设计实习报告 JAVA图形用户界面 实验六Java图形用户界面 1.实验目的 (1)掌握图形用户界面基本组件。 (2)了解如何使用布局管理器对组件进行管理。 (3)掌握Java事件处理机制。 2.实验内容 实验题 1 编写一个模拟计算器的程序,使用面板与网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式与结果显示在文本框中。 运行结果: 实验报告的内容与格式按任课教师的要求书写。

加法: 主要代码: private void initComponents() { jButton1 = new javax、swing、JButton(); jButton2 = new javax、swing、JButton(); jButton3 = new javax、swing、JButton(); jButton4 = new javax、swing、JButton(); jButton5 = new javax、swing、JButton(); jButton6 = new javax、swing、JButton(); jButton7 = new javax、swing、JButton(); jButton8 = new javax、swing、JButton(); jButton9 = new javax、swing、JButton(); jButton10 = new javax、swing、JButton(); jButton11 = new javax、swing、JButton(); jButton12 = new javax、swing、JButton(); jButton13 = new javax、swing、JButton(); jButton14 = new javax、swing、JButton(); jButton15 = new javax、swing、JButton(); jTextField1 = new javax、swing、JTextField(); setStub(null); jButton1、setText("3"); jButton1、addActionListener(new java、awt、event、

Java注册界面设计

J a v a注册界面设计 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

Java注册界面设计 package test; public class Register_GUI { public Register_GUI() { RegisterFrame rf = new RegisterFrame(); (true); } public static void main(String args[]) { new Register_GUI(); } } class RegisterFrame extends JFrame { rim(); = new String()); = () "男" : "女"; = ().trim(); = ().toString(); (null, "\t 用户名不能为空"); return; } (null, "\t 密码不能为空 "); return; } (null, "密码两次输入不一致,请重新输入"); return; } (null, "\t 年龄不能为空"); return; } int age = ; if (age <= 0 || age > 100) { (null, "\t 年龄输入不合法"); return; } (null, "\t 注册成功!" +" \n 姓名:"++" \n 性别:"++"\n 年龄:"++"\n 班级: "+;

} if () == resetbtn) { (""); (""); (""); (); (""); (0); } if () == cancelbtn) { (); } } } class Register { String name; String password; String sex; String age; String nclass; }

界面设计风格说明

界面设计风格说明 1、引言?错误!未定义书签。 1、1、编写目得?错误!未定义书签。 1、2、?文档范围?错误!未定义书签。 1、3、.................................................................................. 读者对象?错误!未定义书签。 1、4、?参考文献...................................................................................... 错误!未定义书签。 1、5、?术语与缩写解释........................................................................ 错误!未定义书签。 2、目标人群?错误!未定义书签。 3、界面设计原则?错误!未定义书签。 3、1、界面一致性?错误!未定义书签。 3、2、?系统响应时间?错误!未定义书签。 3、3、?出错信息与警告.......................................................................... 错误!未定义书签。 3、4、?一般交互原则.............................................................................. 错误!未定义书签。 3、5、信息显示原则........................................................................... 错误!未定义书签。 3、6、?视觉设计?错误!未定义书签。 4、设计说明............................................................................................... 错误!未定义书签。 1.引言 1.1.编写目得 ?本文档就是对系统界面设计风格进行描述, 1.2.文档范围 ?本文档就是对系统界面设计风格进行描述, 1.3.读者对象 ?本文档得阅读对象就是智能手机系统得设计人员、开发人员、业务规范设计人员、软件测试人员。 1.4.参考文献

java图形化界面练习及答案

作业标题:第四次练习题(总分:得分:分)一、单选题(共有题目15题,共计分) 1. 下列属于容器的组件有 A. ) JButton B. JPane C. Canvas D. JTextArea 学生的答案: B 标准答案: B 该题分数: 学生得分: 分 2. 】 下列方法中,不属于WindowListener接口的是A. windowOpened()

B. windowClosed() C. windowActivated() D. > windowAdapter 学生的答案: D 标准答案: D 该题分数: 学生得分: 分 3. 下列不属于Swing中组件的是( )。 A. JPanel B. JTable C. 《 Menu D. JFrame

学生的答案: C 标准答案: C 该题分数: 学生得分: 分 4. 以下Swing组件中哪一个不是顶层容器组件( )。 A. 框架 B. - 对话框 C. 面板 D. 小程序 学生的答案: C 标准答案: A 该题分数: 学生得分: 0分 5. 对于Swing基本控件单选框,若要使两个单选框对象之间具有相互排斥的关系,需要( )。 A. 》

创建两个单选框对象时定义相同的对象名 B. 将两个单选框对象放在同一个面板上 C. 定义一个ButtonGroup对象group,将两个单选框对象加到group中D. 让两个单选框排成一行或一列 学生的答案: C 标准答案: C 该题分数: 学生得分: 分 6. . 容器被重新设置大小后,( )布局管理器的容器中的组件大小不随容器大小的变化而改变。 A. CardLayout B. FlowLayout C. BorderLayout ?

java的界面设计报告

Java 学院:计算机科学学院 班级:计算机科学与技术2班 姓名:雷燕 学号:41209010227 综 合 大 作 业

一、问题背景和描述 针对高等院校的教学过程,开发出相关的教学过程信息管理系统,提高教学质量。教学过程如下图。每项教学活动中都会产生相关信息,利用学习的知识对各种信息进行存储和维护。 二、问题分析及设计思路 1、所需解决问题: 实体功能存放位置界面风格 填空题search&display File Swing 2、实体分析: 有实际意义实体: (1)填空题的存储位置在file中 (2)属性为:题目内容,题目编号以及题目的答案 (3)引用:先存入了F盘,然后再从文件中读取,然后按编号搜索及显示。 3、功能分析:查找功能需要首先输入要查找的题目编号,查找到题

目内容并显示。 4、界面分析:只能用Swing继承自Jframe,界面风格为比较随意,整体风格比Awt显得更美观。其中使用方法与AWT有些区别。 5、程序架构: 查找和显示填空题:在界面上输入所需要查找的题目编号,点击ok,在界面中显示所找题号题目内容。 三、类图 四、程序代码 1.首先我创了一个填空题的类,其中它具有题目的编号,内容,正确答案的属性

package package雷燕; //定义一个填空题的类 public class Fullbank { int number; String connents; String answer; public Fullbank(int a,String b,String c) { number=a; connents=b; answer=c; }} 2.我然后把几个填空题类存入了文件,是按对象存入 public class putinfullbank { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { Fullbank []b=new Fullbank[10]; Scanner c=new Scanner(System.in); for(int i=1;i<=10;i++)

用户界面设计与答案

1.用户满意度=功能+___人机界面_____+响应时间+可靠性+易安装性+____信息____+可维护性+其他因素 2. ____人机交互(人机对话)____是指人与计算机之间使用某种语言、以一定的交互方式,为了完成任务进行的一系列信息交换过程。 3.软件界面设计分为____功能性设计界面____、____情感性设计界面____、____环境性设计界面____。 4.进行系统分析和设计的第一步是___用户分析_____。 5.使用较早,也是使用最广泛的人机交互方式是____交互方式____。 6.软件界面开发流程包括____系统分析____、____系统设计____、____系统实施____三个阶段 7.设计阶段包括界面的____概念设计____、____详细设计____、____原型建立____与界面实现以及综合测试与评估等8.VB 是以结构化___Basic_____语言为基础、以____事件驱动作____为运行机制的可视化程序设计语言。 9.菜单使用形式主要有____菜单操作____和____Tba控件操作____两种。 10.随着计算机图形技术的发展,以直接操纵、桌面隐喻以及所见即所得为特征的____图形用户界面____技术广泛被计算机系统采用。 11.在用VB 开发应用程序时,一般要布置窗体、设置控件的属性、___编写代码___。 12. 假定在窗体上有一个通用对话框,其名称为CommonDialog1,为建立一个保存文件对话框,则需要把Action 属性设置为__value__。 13. 计时器事件之间的间隔通过__interval__属性设置。 14. 语句“Print “5+65=”;5+65”的输出结果为__5+65=70__。 15. 设有下列循环体,要进行4次循环操作,请填空。 x = 1 Do x = x * 2 Print x Loop Until__x<=32__ 16. 下列程序段的执行结果为__2 3 5__。 x = 1 y = 1 For I = 1 To 3 F= x + y x = y y = F Print F; Next I 17. 以下为3个列表框联动的程序,试补充完整。 Private Sub Dir1_Change() File1.Path=Dir1.Path End Sub Private Sub Drive1_Change() Drivel.Path=File1.Path;Dir1.Path=Drivel.Path__[7]__ End Sub 18. 在下列事件过程中则响应该过程的对象名是cmdl,事件过程名是__窗口标题事件__。 Private Sub cmd1_Click() Form1.Caption=“VisualBasic Example” End Sub 19. 当将文本框的SelStar 属性设置为0时,表示选择第开始位置在第一个字符之前,设置为1时表示__[9]__。 20. 以下程序代码实现单击命令按钮Command1 时形成并输出一个主对角线上元素值为“-”,其他元素值为“+”第6*6 阶方阵。 Privas Sub Command1_Click() DimA(6,6) For I = 1 To 6 For J = 1 To 6 If I = J Then Print “-” Else __[10]__ End If Print A (I,J); Next J Print Next I End Sub 21. 字母B的KeyAscii 码值为65,其KeyCode码值___[11]__。 22. Visual Basic 中的控件分为3类:__[12]_、ActioveX 控件和可插入对象。

java简单图形用户界面代码

package dsr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.doczj.com/doc/2612946823.html,.Socket; public class Login extends JFrame implements ActionListener{ //定义组件 JPanel northPanel,southPanel,centerPanel,centerPanel1,centerPanel11,centerPanel12; JButton loginBtn,registerBtn,cancalBtn; JLabel userLbl,passwordLbl,titleLbl; JTextField userTxt; JPasswordField passwordPwd; static String name; public Login () { super("用户登录"); northPanel=new JPanel(); southPanel=new JPanel(); centerPanel1=new JPanel(); centerPanel11=new JPanel(); centerPanel12=new JPanel(); //标题 titleLbl=new JLabel("欢迎进入考试系统"); titleLbl.setFont(new Font("隶书",Font.BOLD,24)); northPanel.add(titleLbl); this.add(northPanel,BorderLayout.NORTH); //中间部分 centerPanel1.setLayout(new BorderLayout()); userLbl=new JLabel("用户名"); userTxt=new JTextField(12); centerPanel11.add(userLbl); centerPanel11.add(userTxt); centerPanel1.add(centerPanel11,BorderLayout.NORTH); passwordLbl=new JLabel("密码"); passwordPwd=new JPasswordField(12); centerPanel12.add(passwordLbl); centerPanel12.add(passwordPwd);

Java注册界面设计

Java注册界面设计 package test; import https://www.doczj.com/doc/2612946823.html,ponent; import java.awt.Dimension; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.border.Border; import java.util.Vector; public class Register_GUI { public Register_GUI() { RegisterFrame rf = new RegisterFrame(); rf.setVisible(true); } public static void main(String args[]) { new Register_GUI(); } } class RegisterFrame extends JFrame { // 框架类 /** * */ private static final long serialVersionUID = -3779096743730354383L; private Toolkit tool; public RegisterFrame() { setTitle("用户注册");

软件工程用户界面设计报告.doc

目录0. 文档介绍2 0.1 文档目的 2 0.2 文档范围 2 0.3 读者对象 2 0.4 参考文献 2 0.5 术语与缩写解释 2 1. 应当遵循的界面设计规范3 2. 界面的关系图和工作流程图 5 3. 主界面 5 4. 子界面A 6 5. 子界面B 7 6. 美学设计7 7. 界面资源设计错误!未定义书签。 8. 其他错误!未定义书签。

文档介绍 0.1 文档目的 界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支。界面设计文档可以让用户对软件产品有了更直观的了解,并且了解各个模块的设计及用意。 0.2 文档范围 文档包括公用界面设计,学生用户界面设计,教师用户界面设计,其中各个界面包括框架设计,编程设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计。 0.3 读者对象 登陆网站的游客、注册成会员的学生、教师以及管理员。 0.4 参考文献 提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下: [1] 张海藩,《软件工程导论(第5版)》,清华大学出版社,1900年01月 [2] 杨培添,《软件界面设计》,电子工业出版社,2007年02月 [3] 林锐,《Web软件用户界面设计指南》,电子工业出版社,2005年5月 [4]吴士力,汪孝宜,胡俦,《网络系统开发实例精粹(JSP版)》,电子工业出版社, 2006年8月 [5] 黄艳群,黎旭,李荣丽,《设计·人机界面》,北京理工大学出版社,2007年5月https://www.doczj.com/doc/2612946823.html,/view/43210.html?wtp=tt https://www.doczj.com/doc/2612946823.html,/view/119481.htm 0.5 术语与缩写解释

Java基础实验报告-图形用户界面设计

南京工程学院 实验报告 课程名称 JAVA基础 实验项目名称图形用户界面设计 实验学生班级 实验学生姓名 学号 同组学生姓名 实验时间 实验地点 实验成绩评定 指导教师签字年月日

一、实验目的和要求 1.掌握Java Swing组建的使用方法,包括窗口、框架、对话框、面板、文本编辑框、按钮、组合框等多种布局方式,掌握窗口菜单和快捷菜单设计方式。 2.理解委托时间处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。 3.熟悉在组件上绘图的方法。 二、实验题目 用表格存储并显示个人所得税税率表,给定一个月收入值,计算应缴的个人所得税。 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 算法设计思路:本次实验题目为计算个人所得税,所以本人从网上找到了国家最新的税收政策,以下为截图:

因此,我设计了以下核心算法 public void actionPerformed(ActionEvent e) { if(e.getSource()==button_b) { double wage=Double.parseDouble((String)text_wage.getText()); double tax = 0; if(wage<=3500) tax=0; if(wage>3500&&wage<=5000) tax=(wage-3500)*0.03; if(wage>5000&&wage<=8000) tax=(wage-3500)*0.1-105; if(wage>8000&&wage<=12500) tax=(wage-3500)*0.2-555; if(wage>12500&&wage<=38500)

Java图形用户界面设计

前言 随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。现在的应用软件越来越要求界面友好、功能强大而又使用简单。而众所周知,在Java中进行GUI 设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。这也是很多Java 程序员抱怨的事情。但GUI已经成为程序发展的方向,所以我们也必须了解Java 的GUI设计方法和特点。其实,采用Java提供的布局管理器接口和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比VB麻烦许多。本文试图通过自己的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的Java痴迷者一些帮助。 Java中的布局管理器 2.1 为什么要使用布局 在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局管理器。比如说,设计一个简单的计算器,或一个文本编辑器等等。这些组件是让JVM 自己任意安排呢?还是按照一定的位置关系进行规范的安排呢?当然应该选择后者。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。那么,我们在什么时候应该使用布局管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢? 如果你写的是GUI程序,在使用AWT/Swing组件时就不应硬性设置组件的大小和位置,而应该使用Java的布局管理器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。不信,你可以新建一个Frame(或JFrame),通过setBounds()方法往其中添加几个Button(或JButton),一旦你将窗体拉大或缩小时,你会发现组件的排列完全不是按你所预想的那样。为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之合理调整,我们就需要使用布局管理器。 为此,我们首先要知道Java的布局方式,Java提供的API中有些什么布局管理器,它们的布局特点是什么。 2.2 Java的布局方式 我们都知道,Java的GUI界面定义是由AWT类包和Swing类包来完成的。它在布局管理上采用了容器和布局管理分离的方案。也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。 现在我们来看Java中布局管理器的具体实现。我们前面说过,Java中的容器类(Container),它们只管加入组件(Component),也就是说,它只使用自己的add()方法向自己内部加入组件。同时他记录这些加入其内部的组件的个数,可

app用户界面设计大作业

教学站:杭州前进学号:201812925310039 姓名:詹浩裕 医护app用户界面设计说明书 修订历史记录

目录 1 引言................................................... - 2 - 1.1编写目的............................................ - 2 - 1.2项目背景............................................ - 2 - 1.3主要功能 (2) 2 应当遵循的界面设计规范 ................................. - 3 - 2.1用户界面设计原则.................................... - 3 - 2.2界面一致性 (4) 2.3布局合理化原则.......................... 错误!未定义书签。 3 引导页..................................... 错误!未定义书签。 4 主界面................................................. - 5 - 4.1主界面.............................................. - 6 - 4.2登录页面................................ 错误!未定义书签。 4.3各子界面 (7) 5 美学设计 (10) 6 界面资源设计 (10) 6.1图标资源 (10) 7 投诉与建议 (11) - 1 -

Java图形用户界面实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:图形用户界面 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:一、实验目的 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 二、实验要求 1. 掌握使用布局管理器对组件进行管理的方法。

2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 掌握组件的使用方法。 5. 了解对话框的使用方法。 三、实验内容 (一)算术测试。 实验要求: 编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确; ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过 ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答 案;MainClass是软件的主类。 程序模板: public class Teacher { int numberOne,numberTwo; String operator=""; boolean right; public int giveNumberOne(int n) { numberOne=(int)()*n)+1; return numberOne; } public int giveNumberT wo(int n) { numberTwo=(int)()*n)+1; return numberTwo; } public String giveOperator() { double d=(); if(d>= operator="+"; else operator="-"; return operator; } public boolean getRight(int answer) { if("+")) { if(answer==numberOne+numberTwo) right=true; else right=false; }

用户界面设计风格说明 (参考模版)

用户界面设计风格说明(参考模版) 1引言 1.1设计说明 本文档是对系统界面设计风格进行描述,和用户交互的最终界面在《详细设计说明书》中设计和解释。 1.2概念和定义 用户界面:又称人机界面,实现用户与计算机之间得通信,以控制计算机或进行用户和计算机之间得数据传送得系统部件。 GUI:即图形用户界面,一种可视化得用户界面,它使用图形界面代替正文界面。 1.3用户假定 将使用本系统的用户定义为:对应用程序或计算机的一般用法有一定了解,用户希望界面符合WINDOWS9X特别是OFFICE97风格,对易用性、简洁性有比较高的要求,对界面快速交互没有很强的要求(即不希望通过命令方式快速交互)。 2用户界面设计规范 2.1用户界面设计原则 本系统坚持图形用户界面(GUI)设计原则,界面直观、对用户透明:用户接触软件后对界面上对应的功能一目了然、不需要多少培训就可以方便使用本应用系统。 界面设计员应该明白软件中用户是所有处理的核心,不应该有应用程序来决定处理过程,所以用户界面应当由用户来控制应用如何工作、如何响应,而不是由开发者按自己的意愿把*作流程强加给用户。 界面设计必须经过确认才能完成。 2.2界面一致性 在界面设计中应该保持界面的一致性。一致性既包括使用标准的控件,也指使用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面确保一致。 1)显示信息一致性标准 (1)标签提示:字体为不加重、宋体、黑色、灰底或透明、无边框、右对齐、不带冒号、一般情况为五号(10号); (2)日期:正常字体、宋体、白底黑字、3-D lowered; (3)对齐方法: l 左对齐:一般文字、单个数字、日期等 l 右对齐:数字、时间、日期加时间。 (4)分辨率为800*600,增强色16色 (5)字体缺省为宋体、五号、黑色 (6)底色缺省采用灰色 这些信息的排列显示风格供参考, 在同一个应用中,这些信息的表现方式不一致,会使得用户分散注意力,影响这一软件的使用,因此开发者应当注意在同一软件中表现形式的一致性。 2)布局合理化原则 应注意在一个窗口内部所有控件的布局和信息组织的艺术性,使得用户界面美观。 在一个窗口中按tab键,移动聚焦的顺序不能杂乱无章,tab 的顺序是先从上至下,再从左至右。一屏中首先应输入的和重要信息的控件在tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。布局力求简洁、

实验三图形用户界面设计(汽院含答案解析)

实验三图形用户界面设计 实验目的 1.掌握Java语言中GUI编程的基本方法 2.掌握Java语言中AWT组件的基本用法 3.掌握Java语言中Swing组件的基本用法 实验导读 1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地 进行交互。 AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 JDK写程序所有功能都是靠虚拟机去操作本地操作系统。比如window下,就是JDK 用windows API实现功能。而awt包中很多组件是组件自身去调用本地操作系统代码swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。 图3.1 AWT常用组件继承关系图 Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。 2.布局,容器中的组件的排放方式。常见的布局管理器:

FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。 BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。 GridLayout(网格布局管理器):规则的矩阵 CardLayout(卡片布局管理器):选项卡 GridBagLayout(网格包布局管理器):非规则的矩阵 3.类JFrame是java.awt.Frame 的扩展版本,该版本添加了对JFC/Swing 组件架 构的支持,常用方法如下: 1)JFrame() 该构造方法可以创建一个无标题的窗口,窗口的默认布局为 BorderLayout布局。 2)JFrame(String s) 该构造方法可以创建一个标题为s的窗口,窗口的默认布 局为BorderLayout布局。 3)public void setBounds(int a,int b,int width,int height) 窗口调用该方法 可以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏 幕上方b个像素;窗口的宽是width,高是height。 4)public void setSize(int width,int height) 设置窗口的大小,窗口在屏幕出 现是默认位置是(0,0)。 5)public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默认 是不可见的。 6)public void setResizable(boolean b) 设置窗口是否可调整大小,窗口默认 是可调整大小的。 7)public void setDefaultCloseOperation(int operation) 设置用户在此窗体 上发起"close" 时默认执行的操作。 8)public void setLocationRelativeTo(Component c) 设置窗口相对于指定组 件的位置。如果组件当前未显示,或者c 为null,则此窗口将置于屏幕的 中央。 实验内容 1.图形用户界面设计程序(ArtFont.java) 要求:设计一个文字字体设置窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。并模拟在不同操作系统下的显示效果。程序的最终显示效果如下: 提示:整个窗体继承于JFrame,采用BorderLayout布局。在窗体中添加三个JPanel:northPanel、centerPanel和southPanel,分别位于窗体的北部、中部和南部,然后分别在各个面板中添加其它组件,并逐步完善程序功能。

相关主题
文本预览
相关文档 最新文档