当前位置:文档之家› 第7章 Java图形用户界面 - 副本

第7章 Java图形用户界面 - 副本

第7章  Java图形用户界面 - 副本
第7章  Java图形用户界面 - 副本

第7章图形用户界面

1 图形用户界面的概念 (1)

1.1 用户界面的演变 (1)

1.2 AWT和SWING (2)

2 一个简单的图形界面程序 (3)

3 图形界面构件 (5)

3.1 容器类构件 (5)

3.2 按钮类构件 (6)

3.3 选项类构件 (7)

3.4 文本类构件 (7)

3.5 标签类构件 (8)

3.6 滚动条类构件 (8)

3.7 绘画类构件 (8)

3.8 菜单类构件 (8)

4 布局方式 (10)

4.1 FlowLayout布局 (11)

4.2 BorderLayout布局 (12)

4.3 GridLayout布局 (12)

4.4 CardLayout布局 (13)

4.5 GridBagLayout布局 (13)

4.6 BoxLayout布局 (17)

5 事件 (18)

5.1 委托事件机制 (19)

5.2 常用事件处理 (25)

6 更复杂的界面处理 (27)

6.1 控制显示效果 (27)

6.2 第三方组件 (28)

6.3 自定义组件 (28)

7 示例剖析 (31)

习题 (34)

参考文献 (34)

[本章内容简介]现今的程序几乎都是图形界面的,作为一种程序设计语言提供图形界面支持已经是必然。

本章介绍了Java中如何设计图形界面程序的思路后,详细讲解各构件的使用、事件的处理等。

1图形用户界面的概念

1.1用户界面的演变

在早期的计算机中,标准的输入输出设备是键盘和显示器,没有鼠标和声卡这些先进的设备。我们通过键盘向计算机发出指令和数据,计算机通过显示屏幕反馈信息和结果,这时的用户界面称字符用户界面或命令行界面。例如曾经流行十多年的微机操作系统DOS的用户界面就是一个典型的字符用户界面。在字符用户界面的操作方式下,用户使用计算机时在提示符后键入操作命令,键入的命令会在屏幕上显示出来。计算机接收并执行所键入的命令,给出必要的提示信息,程序运行中输出的信息也是一行一行的字符显示出来,这两类信息经常混在一起。当显示的信息已占满一屏,并有新的信息要显示时屏幕向上滚动,这时屏幕上原来最上方的一行信息滚动出屏幕。字符用户界面的操作方式要求用户熟记计算机的各种操作命令;提示信息和程序运行中输出的信息经常混在一起;当屏幕上显示的信息过多时由于屏幕是滚动显示的,常常出现某些信息用户还没有来得及看就已经滚动出屏幕的情况。所以属于“不友好”的用户界面。

Douglas Englebart是斯坦福研究所的一名工程师,他很早就在考虑如何使计算机的操作更加简便,用什么手段来取代由键盘输入烦琐的指令。60年代初,他在参加一个会议时随手掏出了随身携带的笔记本,画出了一种在底部使用两个互相垂直的轮子来跟踪动作的装置草图,这便是鼠标的雏形。到了1964年,Douglas Englebart再次对鼠标的构思进行完善,动手制作了第一个鼠标。他制作的鼠标是一只小木盒子,里面有两个滚轮,但只有一个按钮。它的工作原理是由滚轮带动轴旋转,并带动变阻器改变阻值,阻值的变化就是移位的信号,经计算机处理后屏幕上指示位置的光标就可以移动了。

由于鼠标象老鼠一样拖着一条长长的尾巴,因此,Douglas Englebart和他的同事在实验室里都把它戏称为“Mouse”。他当时也曾想等到将来鼠标被广泛采用是会有一个更正式的名字,但是“Mouse”这个称呼却一直沿用到了现在。

1973年,Xerox公司将鼠标应用到改进的Alto计算机系统中,但遗憾的是当时的这些系统都是实验用的,完全被用于研究工作。1979年,Apple公司的职员被邀请参观Alto以及运行在该系统上的软件。Steve Jobs被自己看到的计算机技术所震撼,他认为这就是计算机未来的发展潮流,其中就包括用鼠标作为指点设备以及操作系统使用的GUI。Apple公司立即将这些功能加入自己的系统中,开发出了Lisa计算机。虽然Xerox公司在1981年就推出了使用该技术的Star 8010计算机,但是因价格昂贵而不畅销,或许也是因技术过于超前。

Apple公司在1983年推出了自己的第一台使用鼠标的系统,同时也在继续研制Lisa的低成本后续产品——Macintosh。Apple Macintosh于1984年问世,这毕竟是世界上第一个成功的商用GUI系统。虽然当时的鼠标并没有在PC市场上很快流行起来,但是现在的计算机系统的GUI实际都需要使用鼠标,因此目前市场上销售的计算机系统都带有鼠标,它已经成为了计算机的标准配置。图形界面的操作方式使用户使用计算机时更加有效率,更加舒服和得心应手。

用户界面技术也在发展,现在人们正在研制很多更先进的技术,如通过声音与计算机交互的声音界面技术、通过手势来控制计算机的技术,甚至通过思维控制计算机的界面技术等。当然这些技术离实用化还有一段路程。当然最好使用的计算机交互方式还是图形用户界面方式。

1.2AWT和SWING

Java语言是于1995年诞生的一种新的语言,此时图形用户界面已经得到广泛应用,而字符用户界面则已经退缩到一些很特殊的场合,因此从其诞生GUI类库就是一个很重要的组成,相对来讲,它的字符用户界面功能不是很强大。有些人指责Java语言的System.out.print()比起C语言的要差。但是如果你知道如上这些,你就不会再责怪

System.out.print()怎么这么简陋了。最初图形用户接口库的设计目标是让程序员构建一个通用的GUI,使其在所有平台都能正常显示。它采用面向对象的方法,实现了一组用于图形用户界面设计的类,这些类都包含在称为抽象窗口工具集(Abstract Windowing Toolkit)的java.awt包中。和其他GUI工具集一样,AWT中提供了备种用于GUI设什的标准构件,应用程序或小程序可以利用这些构件方便迅速地构造出自己所需的GUI。但是,为了满足平台无关性的要求,AWT中没有包含一些应用在特定平台上的GUI构件,因此显得有些简单。除此之外,它还限制只能使用几种字体并且不能访问操作系统中现有的高级GUI元素。

随着Java语言的迅速发展,AWT的缺点逐渐突出。为了克服这些缺点,SUN公司联合Netscape等公司共同开发了一个新的GUI类库,称为“Swing”,它是Java基础类库(JFC)的一部分。Swing与AWT相比不仅具有更多的图形构件,而且采用了更好的事件机制。因此在可能的情况下应该尽量采用Swing类库来设计图形用户界面。当然一个要注意的事项是要尽量避免混合使用Swing和AWT构件。

2一个简单的图形界面程序

在文件YabsGui1.java中录入如下代码。

import javax.swing.*;

import java.awt.event.*;

import java.awt.FlowLayout;

class YabsGui1{

public static void main(String args[]){

JFrame aFrame=new JFrame();

aFrame.getContentPane().setLayout(new FlowLayout());//设定布局方式

JButton aButton=new JButton("I am aButton");

JButton bButton=new JButton("I am bButton");

MyListener aListener=new MyListener();

aButton.addActionListener(aListener);

bButton.addActionListener(aListener); //绑定事件听众

aFrame.getContentPane().add(aButton);

aFrame.getContentPane().add(bButton); //添加构件到容器

aFrame.setVisible(true);// 或用AFrame.show()

}

}

class MyListener implements ActionListener{

public void actionPerformed(ActionEvent event){

JOptionPane.showMessageDialog(null, event.getActionCommand());

}

}

注:在JDK1.5中aFrame.add(aButton);等同于aFrame.getContentPane().add(aButton);

运行结果如下:

图7.1 YabsGui1运行效果

我们可以看出在Java中图形用户界面程序的设计思路是首先将整个界面看成容器,对容器设定好布局方式后将构件加入容器。为了让某个构件响应事件,还必须对该构件绑定事件听众。

下面我们就来学习Java中有哪些容器、布局方式、构件、和事件。

3图形界面构件

在AWT中将图形用户界面对象分为容器对象和构件对象,只有容器中才可以添加对象(包括容器对象和构件对象)。而在Swing中所有的对象既是容器又是构件。我们下面就来学习Java中主要的图形界面组件。

3.1容器类构件

顶层容器对象是一种不可以嵌入到别的容器中的对象。

顶层容器对象有java.awt.Frame,java.awt.Window,javax.swing.JFrame,

javax.swing.JInternalFrame,java.awt.Dialog,javax.swing.JDialog。

一般情况下用Frame和JFrame来创建顶层容器对象,当有特殊要求例如不规则界面(游安弼.2002a.)时才使用Window,当要创建类似于MFC中的多文档窗口时用JInternalFrame。它们的演示图如下

图7.2 顶层容器对象运行效果

非顶层容器对象是一种可以嵌入到别的容器中的对象。

非顶层容器对象有java.awt.Panel,javax.swing.JPanel,javax.swing.JSplitPane,javax.swing.JTabbedPane,javax.swing.JLayeredPane等。

一般情况下用Panel,JPanel,其它几种容器分别提供了分割线、标签等特殊功能。

图7.3 非顶层容器对象运行效果

一个Frame刚被创建后,其默认设置为:不可见,初始位置(0,0),初始大小(0,0),提供了最大、最小化功能但未实现关闭功能。

为了达到你的要求,您需要作一定的设置,例如:

aFrame.setVisible(true);

aFrame.setLocation(100,150);

aFrame.setSize(200,300);

aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

3.2按钮类构件

按钮是图形用户界面中最常见的一类组件,它是一种用于点击的用户界面组件。按钮上可以有文字,还可以有图象。

按钮对象有Button, javax.swing.JButton, javax.swing.JRadioButton,

javax.swing.JCheckBox。

图7.4 按钮对象运行效果

当按钮对象被点击后,将触发ActionEvent事件,需要使用ActionListener接口处理该类型的事件。对ActionEvent对象调用getActionCommand0方法可以获得按钮的事件名称,缺省为按钮上的label。使用按钮对象的setActionCommand()方法可以改变按钮构件触发的事件名称。例如你可让两个不同的按钮构件触发出相同的事件。

3.3选项类构件

选择类构件是一种让用户在多个项目中进行选择的的用户界面组件。

选择类构件有Choice,List,JComboBox ,JList。

当要节省空间时用List,但要多选时用Choice

当List对象被点击后,将触发ActionEvent事件和ItemEvent事件,

当Choice对象被点击后,将触发ItemEvent事件,

3.4文本类构件

文本类构件是一种让用户显示、输入文本的用户界面组件。

文本类构件有Label,TextField,TextArea,JTextField,JTextField。

3.5标签类构件

标签类构件与文本类构件的区别是只用于显示不能修改。

标签类构件有Label,TextField,JLabel,JTextField。

尽管TextField, JTextField不是专门作为标签用途设计的,但是通过调用其setEditable(false)方法将其作为标签用能取得Label达不到的效果。

3.6滚动条类构件

滚动条类构件是一种让用户显示、输入文本的用户界面组件。

滚动条类构件有java.swt.Scrollbar,javax.swing.JScrollbar。

3.7绘画类构件

绘画类构件是一种供用户绘制图形或设计自定义构件的用户界面组件。

绘画类构件有Canvas,JPanel。

AWT中的Canvas类用来创建画布。Canvas类在使用时必须被继承,它自身不做任何事,一个Canvas组件可以在屏幕上生成矩形空白区域,使应用程序能够在上面随意作画。Canvas组件缺省尺寸为0,0。如想在画布上完成一些图形处理,则Canvas类中的paint()方法必须被重写。Canvas组件可以监听各种鼠标、键盘事件,只需实现KeyListener、MouseMotionListener或MouseListener接口即可。

注意:当在Canvas组件中输入字符时,必须先调用requestFocus()方法,否则输入的字可能跑到其他组件中,或完全遗失。

3.8菜单类构件

菜单类构件是用于生成菜单的用户界面组件。

菜单类构件有MenuBar,Menu,MenuItem,PopupMenu。

弹出式菜单可以在任—组件上弹出,同时也可以在弹出式菜单中添加菜单项和菜单。弹出式菜单必须被添加到某一“父”组件上。如果想要显示弹出式菜单,则需要调用showO方法。如下的代码片段显示了如何使用弹出式菜单:

mySystemMenu=new JPopupMenu();

JMenuItem dontsing=new JMenuItem("dont sing");

dontsing.addActionListener(myActionListener);

mySystemMenu.add(dontsing);

JMenuItem author=new JMenuItem("author...");

author.addActionListener(myActionListener);

mySystemMenu.add(author);

MouseInputAdapter adapter = new MouseInputAdapter() {

int pressedX;

int pressedY;

public void mouseReleased(MouseEvent event) {

mouseJustPressed=true;

if(event.isPopupTrigger()){

mySystemMenu.show(event.getComponent(),event.getX(),event.getY());}

}

public void mousePressed(MouseEvent event) {

pressedX = event.getX();

pressedY = event.getY();

}

public void mouseDragged(MouseEvent event) {

if(isAltBeingPressed)

{

Point p = w.getLocation();

w.setLocation(p.x + (event.getX() - pressedX),

p.y + (event.getY() - pressedY));

}

}

};

w.addMouseListener(adapter);

w.addMouseMotionListener(adapter);

4布局方式

布局方式决定了容器中各构件的放置位置及大小。对于同样的构件,不同的布局方式产生的效果差别很大。选用那种布局方式要根据场合。就比如同一个房间,如果用于上课一般要选排列布置,如果用于打麻将围成圈布置应该更合适。

Java平台提供了几种常用的布局管理器如BorderLayout,CardLayout,FlowLayout,GridLayout,GridBagLayout和一些不太常用的布局管理器如BoxLayout,OverlayLayout,SpringLayout等。这些布局管理器主要用于一次性显示多个组件,不同管理器在使用时需要的参数都不相同,不过它们的使用方法并没有看上去那么复杂。默认情况下,每个容器都有一个自己的布局管理器(1ayout manager),组件可以向布局管理器提供有关布局的尺寸以及对齐方式等参数,但最终的布局效果还要由布局管理器来决定。

每种布局管理器都有自己的优缺点,下面我们分别看一下如何挑选适合的布局管理器。

●情况一

如果需要在尽可能大的范围内显示一个组件,那么最好使用BorderLayout或者

GridBagLayout,使用前者时,必须把组件放在正中间,而使用后者时,则需

要对组件作一些设置:fill=GridBagConstraints.BOTH。另外,还可以考虑使用

BoxLayout,在其中可以让这个需要空间的组件声明为最大的尺寸。

●情况二

如果需要在一行中显示几个组件,而又不想改变这些组件原来的尺寸,那么最

好先利用一个JPanel将这些组件分成一组,然后再用另外一个Jpanel默认的

FlowLayout或者BoxLayout管理器就可以了。

●情况三

如果需要显示一些组件,让它们均匀地排列在若干行、列中,那么使用

GridLayout是最简单的了。,

●情况四

如果需要在同一行或者同一列中显示若干组件,而且需要在它们之间设置不同

的间隔距离以及不同的对齐方式,那么BoxLayout可以实现这些功能。

●情况五

如果需要显示的组件非常多,而且排列关系也比较复杂,那么使用GridBagLayout或者利用JPanel将它们分组,将其排列关系进行一次简化,然后再考虑前面几种情况会比较好。

下面我们就来看看Java中各种布局管理器的使用。

4.1FlowLayout布局

FlowLayout布局管理器是Panel、Applet的缺省布局管理器。它的布局方式是将所有组件按其希望的尺寸从左至右依次排列,如果一行满了,就自动换行。通过调用组件的getPreferredSize()方法,使用组件的最佳尺寸(PreferredSize)。当容器被重新设置大小后,则布局也将会随之发生改变。各个组件大小不变,而其相对位置会发生变化。

容器中各个组件在FlowLayout布局管理器中,缺省为居中放置,但也可设置为左对齐或右对齐。如果希望增加组件之间的间距,可以在构造方法中进行相应设置。

下面介绍怎样使用构件的setLayout()方法实现FlowLayout布局管理器:

(1)setLayout(new FlowLayout(FlowLayout.RIGHT,20,40));

右对齐,组件之间水平间距20个像素,竖直间距40个像素。

(2)setLayout(newFlowLayout(FlowLayout.LEFT));

左对齐,水平和竖直间距为缺省值:5。

(3)setLayout(newFlowLayout());

使用缺省居中对齐方式,水平和竖直间距为缺省值:5。

4.2BorderLayout布局

BorderLayout布局管理器是Window、Frame和Dialog的缺省布局管理器。BorderLayout布局管理器包括5个区域:North、South、East、West和Center,其方位依据跟地图相同。

使用BorderLayout布局管理器的容器被拉伸后(大小改变),各个组件相对位置不变,其中间部分组件的尺寸会发生变化,四周组件宽度固定不变。

如果容器使用了BorderLayout布局管理器,则添加组件时必须指明添加位置,否则组件将无法显示。可以使用两种方式指定位置,p.add(newButton("Okay"),"South");或p.add(newButton("Okay"), BorderLayout.SOUTH);如果使用前一种方式请一定要注意位置字符串的拼写。

注意,每个区域只能添加一个组件,如果添加多个组件,则只能有一个显示。因此如果想要在某一区域添加多个组件,则必须先放一个容器(容器本身也是组件),再将多个组件放于该容器中即可。

4.3GridLayout布局

GridLayout布局管理器可以使容器中各个组件呈网格状布局。当改变容器大小后,其中的组件相对位置不变,但大小改变。这一点与BorderLayou类似。容器中各个组件同高度、同宽度。各个组件的排列方式为:从左到右、从上到下依次排列。

创建GridLayout的关键在于创建时指定网格的行列,其语法格式为:

public GridLayout(int rows, int cols);

其中,rows和cols分别表示想创建的行列数。不过,这两个参数都可以取0,其含义是一行或列允许放置任何数量的组件。例如contentPane.setLayout(new GridLayout(0,2))表示我们定义了一个两列的布局,具体有多少行则根据具体情况定。

另外,GridLayout也和FlowLayout一样,可以自定义组件间距,定义方法也是在构造器中指定:

public GridLayout(int rows, int columns, int horizontalGap, int verticalGap);

例如new GridLayout(3,2),表示生成一个3行2列的GridLayout布局管理器对象。

4.4CardLayout布局

CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间。空间的成员之间的共享更像一摞牌中牌与牌之间的关系。可以想像它们好像牌一样摞在一起,只有最上面的成员是可见的。CardLayout处理这些成员时就像在换牌:你可以定义每张牌的名字,通过说出牌的名字来选牌;或者顺着牌序向前或向后翻牌;或者直接选第一张或最后一张牌。

注意:在一张卡片中只能显示一个组件,因此可以使用容器嵌套方法显示多个组件。

4.5GridBagLayout布局

GridBagLayout实现了AWT中最灵活、同时也是最复杂的一种布局。与GridLayout相同,它把容器中的每个组件按行、列放置,但各个组件所占的空间可以互不相同。GridBagLayout根据对每个组件所施加的空间限制以及该组件自身所设定的最小尺寸和合适尺寸来为各个组件分配空间。对每个组件施加空间限制是通过类GridBagConstraints来实现的。在布局为GridBagLayout的容器中添加某个组件前,首先要设置对该组件的空间限制,然后再添加该组件。相应的代码为:

GridBagLayout gridbagLayout =new GridBagLayout();

setLayout(gridbagLayout);

GridBagConstraints c=new GridBagConstraints();

… //生成组件theComponent,并设置c的值对组件施加空间限制

gridbagLayout .setConstraints(theComponent,c);

add(theComponent);

下面我们来看一下如何来设置对组件的空间限制。类GridBagConstraints中提供了一些相应的域和常量。

(1)anchor:指明当组件小于其显示区时,放置该组件的位置。其值可为CENTER、EAST、NORTHWEST等,缺省值为CENTER。

(2)fill:指明当组件小于其显示区时是否改变组件的尺寸,使其照水平方向或垂直方向填满显示区。其值为NONE、HORIZONTAL、VERTICAL或BOTH,缺省值为NONE。

(3)gridwidth和gridheight:指明组件所占的行、列数。值为REMAINDER指明组件是该行或该列的最后一个组件,值为RELATIVE则指明组件紧挨该行或该列的最后一个组件。它们的缺省值均为1。

(4)gridx和gridy:指明组件的显示区左端或上端的单元。gridx=0为最左端的单元,gridy=0为最上端的单元。值为RELATIVE则把组件放到前面所加的最后一个组件的右端或下端,它是缺省值。

(5)insets:指明组件与其显示区边缘之间的距离,缺省值为new Insets(0,0,0,0)。

(6)ipadx和ipady:指明组件的大小与其指定的最小尺寸之间的关系。组件的宽度和高度分别为最小尺寸加ipadx*2和ipady*2(像素数)。缺省值均为0。

(7)weightx和weighty:指明当容器扩大时,如何在行、列间为组件分配额外的空间,它们是double类型,其值可以从0.0到1.0,通常指定为0.0或1.0,使得某一组件完全占有额外的空间,而其他组件大小不变。它们的缺省值均为0 .0。

当为某个组件设置了空间限制并添加了该组件时,布局管理器GridBagLayout提取出GridBagConstraints中所设定的值,然后不再使用该实例,因此该实例可以重新用于其他组件,但是,这时要设置实例中被修改的域的值为缺省值或合适的值。

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class GridBagWindow extends JFrame {

boolean inAnApplet = true;

final boolean shouldFill = true;

final boolean shouldWeightX = true;

public GridBagWindow() {

JButton button;

Container contentPane = getContentPane();

GridBagLayout gridbag = new GridBagLayout();

GridBagConstraints c = new GridBagConstraints();

contentPane.setLayout(gridbag);

if (shouldFill) {

//natural height, maximum width

c.fill = GridBagConstraints.HORIZONTAL;

}

button = new JButton("Button 1");

if (shouldWeightX) {

c.weightx = 0.5;

}

c.weightx = 0;

c.gridx = 0;

c.gridy = 0;

gridbag.setConstraints(button, c);

contentPane.add(button);

button = new JButton("2");

c.gridx = 1;

c.gridy = 0;

c.weightx = 1;

gridbag.setConstraints(button, c);

contentPane.add(button);

button = new JButton("Button 3");

c.gridx = 2;

c.gridy = 0;

c.weightx = 0;

gridbag.setConstraints(button, c);

contentPane.add(button);

button = new JButton("Long-Named Button 4");

c.ipady = 40; //make this component tall

c.weightx = 1.0;

c.gridwidth = 3;

c.gridx = 0;

c.gridy = 1;

c.weighty = 1.0;

c.fill = GridBagConstraints.VERTICAL;

gridbag.setConstraints(button, c);

contentPane.add(button);

c.weightx = 0.0;

c.fill = GridBagConstraints.HORIZONTAL;

button = new JButton("Button 5");

c.ipady = 0; //reset to default

c.weighty = 0; //request any extra vertical space

c.anchor = GridBagConstraints.CENTER; //bottom of space

//c.insets = new Insets(10,0,0,0); //top padding

c.gridx = 1; //aligned with button 2

c.gridwidth = 2; //2 columns wide

c.gridy = 2; //third row

c.fill = GridBagConstraints.BOTH;

gridbag.setConstraints(button, c);

contentPane.add(button);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

if (inAnApplet) {

dispose();

} else {

System.exit(0);

}

}

});

}

public static void main(String args[]) {

GridBagWindow window = new GridBagWindow();

window.inAnApplet = false;

window.setTitle("GridBagLayout");

window.pack();

window.setVisible(true);

}

}

运行后的结果如下:

4.6BoxLayout布局

在Swing 包中提供了一个通用的布局管理器。该布局管理器要么从左到右要么从上到下布局其构件。你可将其看成是一个全功能的FLOWLAYOUT。

通过组合使用BoxLayout,你可设计出跟GridBagLayout一样效果的布局,而GridBagLayout要复杂的多。在有些要使用GridLayout或BorderLayout的场合,BoxLayout也很有用。BoxLayout和以前的大多数布局管理器的最大区别是它尊重每个组件的最大尺寸和X/Y对齐。

下图即使用了两个BoxLayout。上部分是采用从上到下布局方式将一个标签布局在一个滚动面板上面。在下部分,两个按钮从左到右布局。最后采用BorderLayout将它们联合起来。

图7.5 BoxLayout的演示图

5事件

每次用户输入一个字符或者单击一次鼠标,一个事件就发生了。任何一个Java程序中的对象都可能被通知到有某事件发生,只要它实现了一些相应的接口并且事先在一个事件源对象那里注册好,告诉它“发生了某事件时通知我一下”。被通知过后,对象可以作出不同的响应,以实现各自的功能。图形用户界面就是利用这种事件响应来实现接收用户操作的。而且事件机制(有时候我们也叫它消息机制)还可以用到很多其他地方,以实现更为复杂的功能。

java图形界面之电子算盘

Java图形用户界面 院系: 计算机系姓名:后人好乘凉 一实验目的 ●使学生综合运用图形用户界面设计的概念; ●使学生熟悉使用中间面板,组成层次复杂的GUI界面; ●使学生掌握使用事件驱动编程; 二实验环境及实验准备 ●所需硬件环境为微机; ●所需软件环境为JDK、Eclipse; ●掌握Java下界面容器与基本组件的基本知识与应用; ●掌握Java下事件处理模型; ●掌握Java下图形绘制的方法; 三实验内容 (一)、设计实现电子算盘,并完成测试; [题目描述及要求] 给小朋友设计一个电子算盘。要求绘制电子算盘界面,设计并实现打珠算过程(界面参考如下图示)。 电子算盘参考界面示意 程序源代码: package calculator;

import java、awt、Color; //导入 import java、awt、GridLayout; import java、awt、Container; import javax、swing、JLabel; import javax、swing、JButton; import javax、swing、ImageIcon; import javax、swing、JPanel; import javax、swing、JFrame; import javax、swing、JTextField; import java、awt、event、*; public class Calculator extends JFrame{ public int totalNumber; public int t = 0; public boolean[] isAddFive = new boolean[5]; public int number[] = new int[5]; public ImageIcon picture = new ImageIcon(System、getProperty("user、 dir") + "/算珠、jpg" ); //添加图片 public ImageIcon picture1= new ImageIcon(System、getProperty("user、 dir") + "/算珠1、jpg" ); Container con = getContentPane(); JPanel j1 = new JPanel(); JPanel j2 = new JPanel(); JPanel j3 = new JPanel(); JPanel time=new JPanel(); JLabel q = new JLabel(); JLabel nA = new JLabel(); JLabel Time=new JLabel(new ImageIcon("、/时钟、jpg")); //添加时钟标签的图片 JTextField a = new JTextField(); JButton Buttons_1[][] = new JButton[2][5]; JButton Buttons_2[][] = new JButton[5][5]; GridLayout gl_1 = new GridLayout(2,5); GridLayout gl_2 = new GridLayout(5,5); GridLayout gl_3 =new GridLayout(); public Calculator() { super("电子算盘"); setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE); setBounds(100,100,600,400); setVisible(true); setLayout(null); AbacusPanel(); } public void AbacusPanel() // 算盘面板

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语言程序设计》期末考试试题及答案

《JAVA语言程序设计》期末考试试题及答案1 (应考必备题库) 一、单选择题 1、编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y + = z --------- /+ + x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。 A. static void method( ) B. public void method() C. final void method( ) D. abstract void method() 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为 _编辑源程序_________ 、 _编译生成字节码 ______ 和_______ 解释运行字节码 ________ 。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占 用____ 2—字节内存空间,这样,无论是中文字符还是英文字符,都是占 用____ 2 ___ 字节内存空间。 3、设x = 2,则表达式(x + + ) /3的值是 __________ 0 ____ 。 4、若x = 5,y = 10,贝Ux < y和x >= y的逻辑值分别为true ___ 和___ fals」。 5、__ 抽象(abstract)-方法是一种仅有方法头,没有具体方法体和操作实现的 方法,该方法必须在抽象类之中定义。最终(fin al)_方法是不能被当前类的子类重新定义的方法。 6、创建一个名为MyPackage的包的语句是package MyPackage ; _, 该语句应该放在程序的位置为:—应该在程序第一句___________________ 。

java图形界面以及链接数据库

import java、awt、*; import java、awt、event、*; import javax、swing、*; import java、sql、*; public class NoteTextArea extends JFrame implements ActionListener { private JPanel jp=new JPanel(); private JButton[] jb = new JButton[4]; private JComboBox box; private JTextArea jt=new JTextArea(); private JScrollPane js=new JScrollPane(jt,ScrollPaneConstants、VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants、HORIZONTAL_SCROLLBAR_NEVER); private String[] obj; private JTextField text = new JTextField(); public NoteTextArea() { jp、setLayout(null); String[] obj = new String[]{"微笑","生气","难过","得意"}; box = new JComboBox(obj); JLabel j1 = new JLabel("留言版"); JLabel j2 = new JLabel("您"); JLabel j3 = new JLabel("地说:"); jb[0] = new JButton("清屏"); jb[1] = new JButton("至顶"); jb[2] = new JButton("至尾"); jb[3] = new JButton("提交"); for(int i = 0;i < 3;i++) { jb[i]、setBounds(650,i*75+55,100,50); } for(int i = 0;i < 3;i++) { jp、add(jb[i]); } j1、setBounds(280,10,50,30); j2、setBounds(20,375,30,50); box、setBounds(55,385,80,30); j3、setBounds(160,375,40,50); text、setBounds(210,385,300,30); jb[3]、setBounds(520,365,75,50); js、setBounds(10,50,600,300); jp、add(j1); jp、add(j2);

Java程序员认证考试题库

第一部分 基础知识练习 目标 本章对应于《学生指南》各章的内容分别提供了练习题集,包括: ●第一章Java入门 ●第二章数据类型和运算符 ●第三章流程控制与数组 ●第四章封装 ●第五章继承 ●第六章抽象类与接口 ●第七章多态 ●第八章异常 ●第九章多线程机制 ●第十章输入输出流 ●第十一章使用泛型和集合框架 ●第十二章基于Swing的图形用户界面(GUI)设计 ●第十三章Java事件驱动编程

第一章练习题(Java入门) (C)1.下列哪项不是JDK所包含的内容?(选一项)A.Java编程语言 B.工具及工具的API C.Java EE扩展API D.Java平台虚拟机 2.下列关于JDK、JRE和JVM的描述。哪项正确?A.JDK中包含了JRE,JVM中包含了JRE B.JRE中包含了JDK,JDK中包含了JVM C.JRE中包含了JDK,JVM中包含了JRE D.JDK中包含了JRE,JRE中包含了JVM 3.下列哪个工具可以编译java源文件? A.javac B.jdb C.javadoc D.junit 4.JDK工具javadoc的作用是哪项? A.生成Java文档 B.编译Java源文件 C.执行Java类文件 D.测试Java代码 5.以下哪些包是Java标准库中常用的包?(选三项)A.java.lang B.javax.servlet .http C.j ava. io D.java.sql

6.使用JDK工具生成的Java文档的文件格式是? A.XML格式 B.自定义格式 c.二进制格式 D.HTML格式 (AC)7.以下关于JVM的叙述,哪项正确?(选两项) A.JVM运行于操作系统之上,它依赖于操作系统 B.JVM运行于操作系统之上,它与操作系统无关 C.JVM支持Java程序运行,它能够直接运行Java字节码文件D.JVM支持Java程序运行,它能够直接运行Java源代码文件 8.以下关于支持Java运行平台的叙述,哪项错误? A.Java可在Solaris平台上运行 B.Java可在Windows平台上运行 C.Java语言与平台无关。Java程序的运行结果依赖于操作系统D.Java语言与平台无关。Java程序的运行结果与操作系统无关 (B)9.以下关于Applet和Java程序之间关系的叙述,哪项错误? A.-个Applet就是一段Java程序 B.Applet是一种特殊的Java程序,它需要运行在Web服务器上C.Applet是一种特殊的Java程序,它需要运行在Web浏览器上D.Applet是一种Java SE平台的应用程序 (AD)10.以下关于Java HotSpot的描述,哪两项错误?(选两项)A.Java HotSpot是一种热编译技术,在编译Java源程序时会被使用B.Java HotSpot是一种热编译技术,在运行Java代码时会被使用C.Java HotSpot是一种热编译技术,它只对程序的部分字节码进行优化D.Java HotSpot是一种热编译技术,它会对程序的全部字节码进行优化

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第6章练习题

全国计算机二级考试Java第6章练习题:异常处理第六章异常处理 1下列对异常包含内容正确的说法是_________. (C) A) 程序中的语法错B)程序在编译或运行中发生的异常事件 C) 程序中预先定义好的异常事件D)程序在编译时发生的错误 2 如程序段中有多个catch语句,程序会__________. (C) A) 对每个catch语句都执行一次 B) 对每个符合条件的catch语句都执行一次 C) 找到匹配的异常类型的catch执行后不再执行其他catch语句 D) 找到匹配的异常类型的catch 执行后再执行其他catch语句 3 以下自定义的异常类的父类是____________. (D) A) Erroe B)AWTError C)VirtualMachineError D)Exception及其子类 4 当需要将异常传递给调用方法时,用___________. (A) A)声明异常B)运行异常 C)捕获异常D)抛出异常 5 对于catch语句的正确排列是___________ . (A) A)父类在先,子类在后B)子类在后,父类在后 C)有继承的异常不能在同一个try段内D)排列无关 6 在下列程序的下划线处,填入适当语句使程序能正确执行: Import java.io.*; Public class Exceptionone { Static void situate(int sit) { System.out.println(“---情况”----+sit+”----”);

Try { If(sit==0) { System.out.println(“无异常捕获”); Return; } Else if (sit==1) { Int i=0; Int j=6/I; } Else if (sit==2) { Int iArray[]=new int [4]; iArray[10]=3; } }__________________________________________ System.out.println(“Catch”+e); } Catch(ArrayIndexOutOfBoundsException e) { System.out.println(“Catch”+e);} Catch(Exception e) {system.out.println(“不会执行”);} Finally {system.out.println(“在situate 中”); }

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考试题库第五章

5-1 下列关于容器的描述中,错误的是D A.容器是由若干个组建和容器组成的 B.容器是对图形界面中界面元素的一种管理 C.容器是一种对指定宽和高的矩形范围 D.容器都是可以独立的窗口 5-2 下列界面元素中,不是容器的是A A.List B.Frame C.Dialog D.Panel 5-3 下列关于实现图形用户界面的描述中,错误的是D A.放在容器中的组件首先要定义,接着要初始化 B.放在容器中的多个组件是要进行布局的,默认的布局策略是FlowLayout C.容器中所有组件都是事件组件,都可以产生事件对象 D.事件处理是忧监听者定义的方法来实现的 5-4 下列关于组件类的描述中,错误的是A A.组件类中包含了文本组件类(TextComponent)和菜单组件类(MenuComponent) B.标签(Label)和按钮(Button)是组件类(Component)的子类 C.面板(Panel)和窗口(Window)是容器类(Container)的子类 D.文本框(TextField)和文本区(TextArea)是文本组件类(TextComponent)的子类 5-5 在对下列语句的解释中,错误的是C but.addActionListener(this); A.but是某种事件对象,如按钮事件对象 B.t his表示当前容器 C.A ctionListener是动作事件的监听者 D.该语句的功能是将but对象注册为this对象的监听者 5-6 所有事件类的父类是C A.ActionEvent B.AwtEvent C.KeyEvent D.MouseEvent 5-7 所有GUI标准组件类的父类是C A.Buttom B.List C.Component D.Container 5-8 下列各种布局管理器中Window类、Dialog类和Frame类的默认布局是C A.FlowLayout B.CardLayout C.BorderLayout D.GridLayout 5-9 在下列各种容器中,最简单的无边框的又不能移动和缩放的只能包含在另一种容器中的容器是D A.Window B.Dialog C.Frame D.Panel 5-10 下列关于菜单和对话框的描述中,错误的是C A.Frame容器是可以容纳菜单组件的容器 B.菜单条中可包含若干个菜单,菜单中又可包含若干菜单项,菜单项中还可包含菜单子项 C.对话框与Frame一样都可作为程序的最外层容器 D.对话框内不含有菜单条,它由Frame弹出

java简单图形用户界面代码

package dsr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.doczj.com/doc/a22015162.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基础 实验项目名称图形用户界面设计 实验学生班级 实验学生姓名 学号 同组学生姓名 实验时间 实验地点 实验成绩评定 指导教师签字年月日

一、实验目的和要求 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图形界面以及链接数据库

import .*; import .*; import .*; public class NoteTextArea extends JFrame implements ActionListener { private JPanel jp=new JPanel(); private JButton[] jb = new JButton[4]; private JComboBox box; private JTextArea jt=new JTextArea(); private JScrollPane js=new JScrollPane(jt,,; private String[] obj; private JTextField text = new JTextField(); public NoteTextArea() { (null); String[] obj = new String[]{"微笑","生气","难过","得意"}; box = new JComboBox(obj); JLabel j1 = new JLabel("留言版"); JLabel j2 = new JLabel("你"); JLabel j3 = new JLabel("地说:"); jb[0] = new JButton("清屏"); jb[1] = new JButton("至顶"); jb[2] = new JButton("至尾"); jb[3] = new JButton("提交"); for(int i = 0;i < 3;i++) {

jb[i].setBounds(650,i*75+55,100,50); } for(int i = 0;i < 3;i++) { (jb[i]); } (280,10,50,30); (20,375,30,50); (55,385,80,30); (160,375,40,50); (210,385,300,30); jb[3].setBounds(520,365,75,50); (10,50,600,300); (j1); (j2); (j3); (box); (text); (jb[3]); (js); for(int i=0;i<=3;i++) { jb[i].addActionListener(this); } (false); (true); ("留言内容:");

Java笔试题库及其答案

一.单选题 1) 在中,要判断D盘下是否存在文件,应该使用以下()判断语句。(选择一项) a) ( (“”) () = =1) b) ((“”) = =1) c) ( (“”) ( ) ) d) ((“)) 答案 2) 在中,()对象可以使用键/值的形式保存数据。(选择一 项) a) b) c) d) 答案 3)给定代码,如下: ( b1, b2){ ; }

要使用这段代码能够编译成功,横线处可以填入()。(选择一项) a)() (b12) b)() b12 c) b12 d) () b12 答案 4)在中,在包下定义一个类,要让包下的所有类都可以访问这个类,这个类必须定义为()。(选择一项) a) b) c) d) 答案 5)在中,下列()语句不能通过编译。 (选择一项) a) “”+ “”+ “”; b) “”+3; c) 3+5 d) 5+5.5; 答案

6)给定代码如下,运行时,会产生()类型的异常。(选择一项) s=; (“”); a) b) c) d) 答案 7)给定如下代码,编译运行之后,将会输出()。 { ( []){ 5; (21) ?(1) /22) ; } } (选择一项) a)1 b)2 c)2.5 d)3

答案 8) 程序中,方法的格式正确的是()。(选择一项) a)([] ) b)([] ) c)([]s) d)([] ) 答案 9)以下语句中, = “123456789” (1,3);执行后中的值为。 (选择一项) a) “23” b)“123” c) “12” d) “234” 答案 10)给定如下代码,编译运行时,结果是()。(选择一项) { ( []) {

java考试题库第六章.docx

第六章异常和异常处理 一选择题 6?1 .下列关于异常的描述中,错误的是(B) A.异常是一种经过修正后程序仍可执行的错误 B.异常是一种程序在运行中出现的不可恢复执行的错误 C.不仅Java语言有异常处理,C++语言也有异常处理 D.岀现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行 6?2.下列关于异常处理的描述中,错误的是(D) A.程序运行时异常由Java虚拟机自动进行处理 B.使用try-catch-finally语句捕获异常 C.使用throw语句抛出异常 D.捕获到的异常只能用当前方法中处理,不能用其他方法中处理 6?3.下列关于try-catch-finally语句的描述中,错误的是(A) A?try语句后面的程序段将给出处理异常的语句 B?catch ()方法跟在try语句后面,它可以是一个或多个 C. catch ()方法有一个参数,该参数是某种异常类的对彖 D?finally语句后面的程序段总是被执行的,该语句起到提供统一接口的作用 6?4.下列关于抛出异常的描述中,错误的是(D) A.捕捉到发牛的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理 B.在说明要抛出异常的方法吋应加关键字throw<异常列表〉 C.v异常列表〉中可以有多个用逗号分隔的异常 D.抛岀异常的方法中要使用下述抛出异常语句:throw<异常名〉;其中,v异常名>是异常类的类名6?5.下列关于用户创建自己的异常描述中,错误的是(D) A.创建自己的异常应先创建一个异常类 B.为实现抛出异常,须在可能抛出异常的方法中书写throw语句 C.捕捉异常的方法是使用try-catch-finally语句格式 D.使用异常处理不会使整个系统更加安全和稳定 二判断题 6?1 .异常是一种特殊的运行错误的对象。(对) 62异常处理可以使整个系统更加安全和稳定。(对) 6?3.异常处理是在编译时进行的。(错) 6-4.Java语言中异常类都是https://www.doczj.com/doc/a22015162.html,ng.Throwable的子类。(对) 6-5.Throwable类有两个子类:Enor类和Exception类。前者由系统保留,后者供应用程序使用。(对)6?6.异常通常是指Error类和Exception类。(错) 6-7.Exception 类只有一个子类为RuntimeException o(错) 68在异常处理屮,出现异常和抛出异常是一回事。(错) 6?9.运行时异常是在运行时系统检测并处理的。(错) 6-10.使用try-catch-finally语句只能捕获一个异常。(错) 6?11 ?捕获异常时try语句后面通常跟有一个或多个catch ()方法用来处理try块内牛成的异常事件。(对)6?12?使用finally语句的程序代码为该程序提供一个统一的的出口。(对) 6?13.抛出异常的方法说明中要加关键字throws,并在该方法屮还应添加throw语句。(对) 6?14.创建异常类时要给出该异常类的父类。(对) 6J5.如果异常类没有被捕获将会产生不正常的终止。(对) 三分析程序的输出结果 6?1. Exer6_l.java public class Exer6_l

java 试题知识讲解

j a v a试题

一、填空题 1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。 2、Java程序的运行环境简称之为JRE_____。 3、编译Java程序需要使用_javac_____命令。 4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。 5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“.class”文件路径。 二、选择题 1、以下选项中,哪些属于JDK工具?(多选)ABCD A、Java编译器 B、Java运行工具 C、Java文档生成工具 D、Java打包工具 2、Java属于以下哪种语言?C A、机器语言 B、汇编语言 C、高级语言 3、下面哪种类型的文件可以在Java虚拟机中运行?D D、.class 4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以 下哪一种? B A、Java文档制作工具 B、Java解释器 C、Java编译器 5、 5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接 使用javac和java命令,需要将环境变量path设置为以下哪个选项?B A.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre; 三、问答题 1、简述Java的特点。面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、 2、简述JRE与JDK的区别JRE(Java Runtime Environment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。 JDK(Java Development Kit,Java开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的。初学者学习和使用Java语言时,首先必须下载和安装JDK。JDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。 第二章 、Java语言的八种基本数据类型有:byte字节型,占一个字节。short短整型,占两个字节。int整型,占4个字节。long长整型,占8个字节。float单精度浮点型,占4个字节。double双精度浮点型,占8个字节。char字符型,占两个字节。boolean型,表示逻辑值,有true和false两个值,分别占一个字节。 2、如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与 计算。如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。例如定义int x = 2,y = 0; boolean b = x < y & x / 2 > 0表达是会发生被0除异常,因为x / y的表达式执行了。而boolean b = x < y & x / 2 > 0是不会出现这种异常的,因为x < y为false,表达式x / y不会执行。

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; }

JAVA面向对象程序设计》练习题库B

第一章J a v a简介 1. 下面( )是JDK中的Java运行工具.(选择二项) A. javac B. javam C. java D. javar 【解析】A C 2. 选出在Java中有效的注释声明(选择二项) A.//This is a comment B.*/This is a comment C./This is a comment D./*This is a comment*/ 【解析】AD 3. 下面( )命令可用于编译Java程序.(选择一项) A. java B. javac C. appletviewer D. javadoc 【解析】B 4. 下面( )数据类型可用于main()方法中传递的参数. (选择一项) A. String

B. Integer C. Boolean D. Variant 【解析】A 5. 在屏幕上显示的消息正确的语句是(选择一项) 【解析】A 6. Java编译器会将Java程序转换为(选择一项) A. 字节码 B. 可执行代码 C. 机器代码 D. 以上所有选项都不正确 【解析】A 7. Java源代码文件的扩展名为(选择一项) A. .class B. .java C. .com D. 以上所有选项都不正确 【解析】B 第二章Java语言基础 1. 在Java中,byte数据类型的范围是(选择一项) A. -32767~32768 B. -32768~32767

C. -127~128 D. -128~127 【解析】D 2. 以下( )是合法的标识符(选择二项) A. Te1_num B. emp1 C. 8678 【解析】AB 3. 下列代码的输出结果是(选择一项) 【解析】A 4. 以下关键字(选择一项)用于终止循环语句 A. break B. exit C. end D. terminate 【解析】A

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

实验三图形用户界面设计 实验目的 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,分别位于窗体的北部、中部和南部,然后分别在各个面板中添加其它组件,并逐步完善程序功能。

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