Java程序设计基础教程第六章图形用户界面编辑

Java程序设计基础教程第六章图形用户界面编辑
Java程序设计基础教程第六章图形用户界面编辑

一、图形用户界面的核心概念

(1)一个简单的GUI示例。

例题:将二进制数据转换为十进制

importjava.awt.*;

importjava.awt.event.*;

public class ConvertToDec extends Frameimplements ActionListener{

Labeldec;

TextFieldinput;

publicConvertToDec(){

super("binary to decimal");

dec=new Label("......结果......");

input=new TextField(15);

Button convert=new Button("转换");

setLayout(new FlowLayout());

add(input);

add(convert);

add(dec);

convert.addActionListener(this);

}

publicvoid actionPerformed(ActionEvent e){

String s=input.getText();

int x=Integer.parseInt(s,2);

dec.setText("result="+x);

}

publicstatic void main(String[] args){

Frame x=new ConvertToDec();

x.setSize(400,100);

x.setVisible(true);

}

}

(2)创建窗体

Frame的创建大致有两种方式:

①通过继承Frame来创建窗体。

②直接由Frame类创建。

(3)创建GUI部件

由add()方法把GUI布局加入到容器中。

(4)事件处理

①事件处理的流程

★给事件源对象注册监听者

★给监听者编写事件处理代码

★发生事件时调用监听者的方法进行相关处理

②事件监听者接口及其方法

Java中的所有事件类都定义在java.awt.event包中,该包中还定义了11个监听者接口,每个接口内部包含了若干处理相关事件的抽象方法。

见P158:表7-1

(5)在事件处理代码中区分事件源

一个事件源对象可以注册多个监听者,一个监听者也可以监视多个事件源。不同类型的事件提供了不同的方法来区分事件源对象。如ActionEvent类中提供了两个方法:

① getSource():用来获取事件对象名。

② getActionCommand():用来获取事件对象的命令名。

例题:有两个按钮,点击按钮b1画圆,点击按钮b2画矩形。

import java.awt.*;

import java.awt.event.*;

public class TwoButton extends Panel implements ActionListener{

Button b1,b2;

Panel draw;

public TwoButton(Paneldraw){

this.draw=draw;

b1=new Button("circle");

b2=new Button("rectangle");

add(b1);

add(b2);

b1.addActionListener(this);

b2.addActionListener(this);

}

public voidactionPerformed(ActionEvent e){

Graphics g=draw.getGraphics();

g.setColor(draw.getBackground());

g.fillRect(0,0,draw.getSize().width,draw.getSize().height);

g.setColor(Color.blue);

String label=e.getActionCommand();

if(label.equals("circle"))

g.drawOval(20,20,50,50);

else

g.drawRect(20,20,40,60);

}

public static voidmain(String[] args){

Frame f=new Frame("to Button eventTest");

Panel draw=new Panel();

TwoButton two=new TwoButton(draw);

f.setLayout(new BorderLayout());

f.add("North",two);

f.add("Center",draw);

f.setSize(300,300);

f.setVisible(true);

}

}

(6)关于事件适配器类

例题:处理窗体关闭

/*

*/

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

public class TestFrame extends Applet{

public void init(){

new MyFrame();

}

}

class MyFrame extends Frame implements ActionListener{ Button btn;

MyFrame(){

super("MY WINDOWS");

btn=new Button("关闭");

setLayout(new FlowLayout());

add(btn);

btn.addActionListener(this);

addWindowListener(new CloseWin());

setSize(300,200);

setVisible(true);

}

public voidactionPerformed(ActionEvent e){

if(e.getActionCommand()=="关闭"){

dispose();

}

}

};

class CloseWin extends WindowAdapter{

public voidwindowClosing(WindowEvent e){

Window w=e.getWindow();

w.dispose();

}

};

二、容器与布局管理

Java.awt包中定义了5种布局管理器:

(1)FlowLayout:流式布局

例题:

import java.awt.*;

import java.applet.Applet;

public class FlowLayoutExample extendsApplet{

publicvoid init(){

setLayout(newFlowLayout(FlowLayout.LEFT,10,10));

String spaces="";

for(int i=1;i<=9;i++){

add(new Button("B #"+i+spaces));

spaces+=" ";

}

}

publicstatic void main(String[] args){

Frame x=new Frame("FlowLayout");

FlowLayoutExample y=new FlowLayoutExample();

x.add(y);

y.init();

x.setSize(200,100);

x.setVisible(true);

}

}

(2)BorderLayout:边缘布局

例题:

import java.awt.*;

import java.applet.Applet;

public class BorderLayoutExample extendsApplet{

String[]borders={"North","East","South","West","Center"};

publicvoid init(){

setLayout(new BorderLayout(10,10));

String spaces="";

for(int i=0;i<5;i++){

add(borders,new Button(borders));

}

}

publicstatic void main(String[] args){

Frame x=new Frame("BorderLayout");

BorderLayoutExample y=newBorderLayoutExample();

x.add(y);

y.init();

x.setSize(300,200);

x.setVisible(true);

}

}

(3)GridLayout:网格布局

例题:

import java.awt.*;

import java.applet.Applet;

public class GridLayoutExample extendsApplet{

publicvoid init(){

setLayout(new GridLayout(3,3,10,10));

for(int i=1;i<=9;i++){

add(new Button("Button #"+i));

}

}

publicstatic void main(String[] args){

Frame x=new Frame("GridLayout");

GridLayoutExample y=new GridLayoutExample();

x.add(y);

y.init();

x.setSize(300,200);

x.setVisible(true);

}

}

(4)CardLayout:卡片布局

例题:

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

public class CardLayoutExample extendsApplet{

publicvoid init(){

final CardLayout cardlayout=newCardLayout(10,10);

setLayout(cardlayout);

ActionListener listener=newActionListener(){

public void actionPerformed(ActionEvente){

cardlayout.next(CardLayoutExample.this);

}

};

for(int i=1;i<=9;i++){

Button b=new Button("Button#"+i);

b.addActionListener(listener);

add("Button"+i,b);

}

}

publicstatic void main(String[] args){

Frame x=new Frame("CardLayout");

CardLayoutExample y=new CardLayoutExample();

x.add(y);

y.init();

x.setSize(300,200);

x.setVisible(true);

}

}

(5)GridBagLayout:网格快布局

例题:

import java.awt.*;

public class Test extends Frame{

publicstatic void main(String[] args){

new Test();

}

publicTest(){

Label receiveLabel=new Label("收件人:");

Label ccLabel=new Label("抄送:");

Label subjectLabel=new Label("主题:");

Label accessoryLabel=new Label("附件:");

TextField receiveField=new TextField();

TextField ccField=new TextField();

TextField subjectField=new TextField();

TextArea accessoryArea=new TextArea(1,40);

TextArea mailArea=new TextArea(8,40);

setLayout(new GridBagLayout());

GridBagConstraints gridBag=new GridBagConstraints();

gridBag.fill=GridBagConstraints.HORIZONTAL;

gridBag.weightx=0;

gridBag.weighty=0;

receiveLabel.setFont(newFont("Alias",Font.BOLD,16));

addToBag(receiveLabel,gridBag,0,0,1,1);

ccLabel.setFont(newFont("Alias",Font.BOLD,16));

addToBag(ccLabel,gridBag,0,1,1,1);

subjectLabel.setFont(new Font("Alias",Font.BOLD,16));

addToBag(subjectLabel,gridBag,0,2,1,1);

accessoryLabel.setFont(new Font("Alias",Font.BOLD,16));

addToBag(accessoryLabel,gridBag,0,3,1,1);

gridBag.weightx=100;

gridBag.weighty=0;

addToBag(receiveField,gridBag,1,0,2,1);

addToBag(ccField,gridBag,1,1,2,1);

addToBag(subjectField,gridBag,1,2,2,1);

accessoryArea.setEditable(false);

addToBag(accessoryArea,gridBag,0,3,2,1);

gridBag.fill=GridBagConstraints.BOTH;

gridBag.weightx=100;

gridBag.weighty=100;

addToBag(mailArea,gridBag,0,4,3,1);

setSize(300,300);

setVisible(true);

}

voidaddToBag(Component c,GridBagConstraints gbc,int x,int y,int w,int h){

gbc.gridx=x;

gbc.gridy=y;

gbc.gridheight=h;

gbc.gridwidth=w;

add(c,gbc);

}

}

(6)BoxLayout:在javax.swing.border包中。例题:

import javax.swing.*;

import java.awt.*;

import javax.swing.border.*;

public class E716{

publicstatic void main(String args[]){

newWindowBox();

}

}

class WindowBox extends Frame{

BoxbaseBox ,boxV1,boxV2;

WindowBox(){

boxV1=Box.createVerticalBox();

boxV1.add(new Label("姓名"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new Label("email"));

boxV1.add(Box.createVerticalStrut(8));

boxV1.add(new Label("职业"));

boxV2=Box.createVerticalBox();

boxV2.add(new TextField(12));

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(new TextField(12));

boxV2.add(Box.createVerticalStrut(8));

boxV2.add(new TextField(12));

baseBox=Box.createHorizontalBox();

baseBox.add(boxV1);

baseBox.add(Box.createHorizontalStrut(10)); baseBox.add(boxV2);

setLayout(new FlowLayout());

add(baseBox);

setBounds(120,125,250,150);

setVisible(true);

}

}

(7)null

例题:

import java.awt.*;

import java.awt.event.*;

class WindowNull extends Frame{

WindowNull(){

setLayout(null);

MyButton button=new MyButton();

Panel p=new Panel();

p.setLayout(null);

p.setBackground(Color.cyan);

p.add(button);

button.setBounds(20,10,25,70);

add(p);

p.setBounds(50,50,90,100);

setBounds(120,125,200,200);

setVisible(true);

}

}

class MyButton extends Button implements ActionListener{ int n=-1;

MyButton(){

addActionListener(this);

}

public void paint(Graphics g){

g.drawString("单",6,16);

g.drawString("击",6,36);

g.drawString("我",6,56);

}

public void actionPerformed(ActionEvent e){

n=(n+1)%3;

if(n==0)

setBackground(Color.red);

else if(n==1)

setBackground(Color.yellow);

else if(n==2)

setBackground(Color.green);

}

}

public class E717{

publicstatic void main(String args[]){

newWindowNull();

}

}

三、常用GUI标准组件

(1)GUI标准组件概述

file:///C:/Users/SBT/AppData/Local/Temp/msohtmlclip1/13/clip_image001.gif

基本GUI部件被加入到容器中,用来完成一种具体的与用户交互的功能。其步骤为:

①创建某种基本控制部件类的对象,指定该对象的属性,如外观、大小等。

②将该对象加入到某个容器的合适位置。

③为该对象注册事件监听者。

(2)文本框与文本域

①文本框

构造方法:

TextField()

TextField(int)

TextField(String)

TextField(String,int)

设置回显字符:

例题:

TextField pass=new TextField(8);

pass.setEchoChar(…*?);

②文本域

构造方法:

TextArea()

TextArea(int,int)

TextArea(String)

TextArea(String,int,int)

③常用方法

数据的写入与读取:

getText()

setText()

isEditable()

指定和获取文本域中“选定状态”文本:

select(intstart,int end)

selectAll()

setSelectionStart()

setSelectionEnd()

getSelectionStart()

getSelectionEnd()

getSelectedText()

屏蔽回显:

setEchoChar(charc)

echoCharIsSet()

getEchoChar()

添加数据:

append(Strings)

insert(Strings,int pos)

④事件响应

文本框中按回车键时产生ActionEvent事件:

事件:ActionEvent

处理事件的接口:ActionListener()

处理事件的方法:actionPerformed(ActionEvent e)

文本框和文本域进行任何数据的更改时,产生TextEvent事件。

事件:TextEvent

处理事件的接口:TextListener()

处理事件的方法:textValueChanged(TextEvent e)

例题:7-10

/*

*/

import java.applet.*;

import java.awt.*;

importjava.awt.event.*;

public classInsertNewLine extends Applet implements ActionListener{ TextField input;

TextArea display;

final static int lineSize=20;

public void init(){

input=new TextField(45);

display=new TextArea(10,45);

add(input);

add(display);

input.addActionListener(this);

}

public void actionPerformed(ActionEvente){

String s=input.getText();

String r=convert(s);

display.setText(r);

}

private String convert(String str){

String result="";

int count=0;

for(int i=0;i

int c=str.charAt(i);

if(c>=32&&c<=126)

count+=1;

else

count+=2;

result=result+(char)c;

if(count>=lineSize){

result+="\n";

count=0;

}

}

return result;

}

}

(3)选项按钮与列表框的使用

①选择事件类:ItemEvent

public ItemSelectable getItemSelectable():返回引发事件的事件源。

public Object getItem():返回引发事件的具体选项。

public int getStateChange():返回具体的选中状态变化类型,它的返回值在ItemEvent的几个静态常量列举之内:

ItemEvent.SELECTED:代表选项被选中。

ItemEvent.DESELECTED:代表选项被放弃不选。

②复选按钮:Checkbox

创建:

Checkbox backg=new Checkbox(“背景色”);

常用方法:

boolean getState()

void setState(Boolean value)

事件响应:

事件:ItemEvent

处理事件的接口:ItemListener()

处理事件的方法:itemStateChanged(ItemEvent e)

例题:7-11

/*

*/

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

public class FuXuan extendsApplet implements ActionListener{

String[] question={"Java test question1\n A.choice1\nB.choice2\n C.choice3","Java test question2\n A.good\n B.bad\nC.luck"};

String[]ch={"A","B","C"};

String[]answer={"AB","BC"};

Checkbox[]cb=new Checkbox[3];

Labelhint;

TextAreacontent;

Buttonok;

intbh=0;

Buttonnext;

Buttonprevious;

publicvoid init(){

setLayout(new BorderLayout());

content=new TextArea(10,50);

add("Center",content);

content.setText(question[bh]);

Panel p=new Panel();

p.setLayout(new GridLayout(2,1));

Panel p1=new Panel();

for(int i=0;i

cb=new Checkbox(ch);

p1.add(cb);

}

p.add(p1);

Panel p2=new Panel();

ok=new Button("确定");

p2.add(ok);

hint=new Label("对错提示");

p2.add(hint);

next=new Button("下一题");

p2.add(next);

previous=new Button("上一题");

p2.add(previous);

p.add(p2);

add("South",p);

next.addActionListener(this);

previous.addActionListener(this);

ok.addActionListener(this);

}

publicvoid actionPerformed(ActionEvent e){ if(e.getSource()==ok){

String s="";

for(inti=0;i

if(cb.getState())

s=s+cb.getLabel();

if(s.equals(answer[bh]))

hint.setText("对");

else

hint.setText("错");

}

else if(e.getSource()==next){

if(bh

bh++;

content.setText(question[bh]);

}

else{

if(bh>0)

bh--;

content.setText(question[bh]);

}

}

}

③单选按钮:CheckBoxGroup

例题:7-12

/*

*/

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

public class ChangeColor extends Appletimplements ItemListener{ String[]des={"红色","蓝色","绿色","白色","灰色"};

Color[]c={Color.red,Color.blue,Color.green,Color.white,Color.gray};

ColordrawColor=Color.black;

publicvoid init(){

CheckboxGroup style=new CheckboxGroup();

for(int i=0;i

Checkbox one=newCheckbox(des,false,style);

one.addItemListener(this);

add(one);

}

}

publicvoid paint(Graphics g){

g.setColor(drawColor);

g.setFont(new Font("变色字",Font.BOLD,24));

g.drawString("变色字",80,80);

}

publicvoid itemStateChanged(ItemEvent e){

Checkboxtemp=(Checkbox)e.getItemSelectable();

for(int i=0;i

if(temp.getLabel()==des){

drawColor=c;

repaint();

break;

}

}

}

}

④下拉列表:Choice

例题:7-13

/*

*/

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

public class ChangeColor2 extends Appletimplements ItemListener{ String[]des={"红色","蓝色","绿色","白色","灰色"};

Color[]c={Color.red,Color.blue,Color.green,Color.white,Color.gray};

publicvoid init(){

Choice color=new Choice();

for(int i=0;i

color.add(des);

}

color.addItemListener(this);

add(color);

}

publicvoid itemStateChanged(ItemEvent e){

Choice temp=(Choice)e.getItemSelectable();

int k=temp.getSelectedIndex();

setBackground(c[k]);

}

}

⑤列表:List

列表List与下拉列表Choice的区别:

列表可以在屏幕上看到一定数目的选择项,而下拉列表只能看到一项。

用户可以选中列表中的多项,而下拉列表只能被选中一项。

★列表可产生2类事件:

ItemEvent类选择事件:当单击某选项时触发。

ActionEvent类动作事件:当双击选项时触发。

例题:7-14

/*

*/

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

public class TestList extends Appletimplements ActionListener,ItemListener{ ListmyList;

Labelresult;

String[]unit={"总务处","教务处","工会","科研处","信息学院","机械学院"};

publicvoid init(){

myList=new List(5,true);

for(int i=0;i

myList.add(unit);

add(myList);

myList.addActionListener(this);

myList.addItemListener(this);

}

publicvoid actionPerformed(ActionEvent e){

if(e.getSource()==myList)

showStatus("您双击了选项"+e.getActionCommand());

}

publicvoid itemStateChanged(ItemEvent e){

String[] sList;

String str="";

List temp=(List)(e.getItemSelectable());

sList=temp.getSelectedItems();

for(int i=0;i

str=str+sList+" ";

showStatus("您选择了选项:"+str);

}

}

(4)滚动条的使用:Scrollbar

例如:

ScrollbarmySlider=new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255); 第1个参数为常量,代表水平滚动条。

第2个参数代表初始值。

第3个参数代表滚动条的滑块长度。

第4、5个参数跟别代表滚动条的最小值和最大值。

★AdjustmentEvent事件:

事件:AdjustmentEvent

处理事件的接口:AdjustmentListener

处理事件的函数:adjustmentValueChanged(AdjustmentEvent e) 例题:7-15

/*

*/

importjava.awt.*;

importjava.applet.*;

import java.awt.event.*;

class ColorBar extends Scrollbar{

publicColorBar(){

super(Scrollbar.HORIZONTAL,0,40,0,295);

this.setUnitIncrement(1);

this.setBlockIncrement(50);

}

};

class ColorPanel extends Panel implementsAdjustmentListener{ ScrollbarredSlider=new ColorBar();

ScrollbargreenSlider=new ColorBar();

ScrollbarblueSlider=new ColorBar();

Canvasmycanvas=new Canvas();

Colorcolor;

publicColorPanel(){

Panel x=new Panel();

x.setLayout(new GridLayout(3,2,1,1));

x.add(new Label("red"));

x.add(redSlider);

x.add(new Label("green"));

x.add(greenSlider);

x.add(new Label("blue"));

x.add(blueSlider);

setLayout(new GridLayout(2,1,5,5));

add(mycanvas);

add(x);

redSlider.addAdjustmentListener(this);

greenSlider.addAdjustmentListener(this);

blueSlider.addAdjustmentListener(this);

}

publicvoid adjustmentValueChanged(AdjustmentEvent e){

int value1,value2,value3;

value1=redSlider.getValue();

value2=greenSlider.getValue();

value3=blueSlider.getValue();

color=new Color(value1,value2,value3);

mycanvas.setBackground(color);

}

};

public class TestSlider extends Applet{

publicvoid init(){

setLayout(new BorderLayout());

add("Center",new ColorPanel());

}

}

四、鼠标和键盘事件

(1)鼠标事件

①鼠标事件类

鼠标事件共有7种情形,用MouseEvent类中的静态整形常量表示。

鼠标事件

?按下鼠标按键:MOUSE_PRESSED

?释放鼠标按键:MOUSE_RELEASED

?单击鼠标按键(按下并释放):MOUSE_CLICKED

?鼠标光标进入组件几何形状的未遮掩部分:MOUSE_ENTERED

?鼠标光标离开组件几何形状的未遮掩部分:MOUSE_EXITED

鼠标移动事件

?移动鼠标:MOUSE_MOVED

?拖动鼠标:MOUSE_DRAGGED

MouseEvent类的主要方法:

?public int getX():返回发生鼠标事件的x坐标。

?public int getY():返回发生鼠标事件的y坐标。

?public Point getPoint():返回Point对象,即鼠标事件发生的坐标点。

?public int getClickCount():返回鼠标点击事件的连击次数。

·处理鼠标事件的接口:

MouseListener接口:

o 注册监视器的方法:addMouseListener()

o 接口中的方法:

2 [url=mk

MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseListene r.html#mouseClicked(java.awt.event.MouseEvent)]mouseClicked[/url]([url=mk MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseEvent.h tml]MouseEvent[/url] e):鼠标按键在组件上单击(按下并释放)时调用。

2 [url=mk

MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseListene r.html#mouseEntered(java.awt.event.MouseEvent)]mouseEntered[/url]([url=mk

MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseEvent.h tml]MouseEvent[/url] e):鼠标进入到组件上时调用。

2 [url=mk

MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseListene r.html#mouseExited(java.awt.event.MouseEvent)]mouseExited[/url]([url=mk MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseEvent.h tml]MouseEvent[/url] e):鼠标离开组件时调用。

2 [url=mk

MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseListene r.html#mousePressed(java.awt.event.MouseEvent)]mousePressed[/url]([url=mk MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseEvent.h tml]MouseEvent[/url] e):鼠标按键在组件上按下时调用。

2[url=mk

MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseListene r.html#mouseReleased(java.awt.event.MouseEvent)]mouseReleased[/url]([url=mk MSITStore:H:\java%20API\JDK_API_1_6_zh_CN(1).CHM::/java/awt/event/MouseEvent.h tml]MouseEvent[/url] e):鼠标按钮在组件上释放时调用

MouseMotionListener接口:

o 注册监视器的方法:addMouseMotionListener()

o 接口中的方法:

2 mouseDragged(MouseEvent e):鼠标按键在组件上按下并拖动时调用。

2 mouseMoved(MouseEvent e):鼠标光标移动到组件上但无按键按下时调用。

例题:7-16 一个鼠标跟踪程序,在当前位置画红色小圆。

/*

*/

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

public class TraceMouse extends Applet implements MouseMotionListener { private static final intRADIUS=7;

private int posx=10,posy=10;

publicvoid init(){

addMouseMotionListener(this);

}

public void paint(Graphics g){

g.setColor(Color.red);

g.fillOval(posx-RADIUS,posy-RADIUS,RADIUS*2,RADIUS*2);

}

public void mouseMoved(MouseEvent event){

posx=event.getX();

posy=event.getY();

repaint();

}

public void mouseDragged(MouseEventevent){}

}

★频繁调用repaint()方法会出现闪烁现象。repaint()方法会调用update(g)方法,update(g)先清除画面上的内容再调用paint()方法。所以产生闪烁现象。

★改进:改写update(g)方法,让其直接调用paint()方法,使用利用背景颜色填充矩形的办法清除applet屏幕。创建双缓冲区来提高显示效果。

例题:修改例题7-16

/*

*/

import java.applet.Applet;

importjava.awt.*;

importjava.awt.event.*;

public classTraceMouse2 extends Applet implements MouseMotionListener { private static final int RADIUS=7;

private int posx=10,posy=10;

protected Image offscreen;

protected Graphics offg;

public void init(){

addMouseMotionListener(this);

offscreen=createImage(getSize().width,getSize().height);

offg=offscreen.getGraphics();

}

public void paint(Graphics g){

offg.setColor(Color.white);

offg.fillRect(0,0,getSize().width-1,getSize().height-1);

offg.setColor(Color.black);

offg.drawRect(0,0,getSize().width-1,getSize().height-1);

offg.setColor(Color.red);

offg.fillOval(posx-RADIUS,posy-RADIUS,RADIUS*2,RADIUS*2);

g.drawImage(offscreen,0,0,this);

}

public void update(Graphics g){

paint(g);

}

public void mouseMoved(MouseEvent event){

posx=event.getX();

posy=event.getY();

repaint();

}

public void mouseDragged(MouseEventevent){}

}

②高级语义事件和低级语义事件

例题:7-17

/*

*/

importjava.applet.Applet;

importjava.awt.*;

importjava.awt.event.*;

publicclass MouseLevel extends Applet{

Button btn;

int pos=0;

public void init(){

btn=newButton("click me");

add(btn);

btn.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e){

Graphics g=getGraphics();

pos+=40;

g.drawString("lowerlevel",pos,50);

}

});

btn.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

Graphics g=getGraphics();

pos+=40;

g.drawString("high level",pos,80);

}

});

}

}

(2)键盘事件

★使用KeyListener接口处理键盘事件

接口中的方法:

public void keyPressed(KeyEvent e)

public void keyTyped(KeyEvent e)

public void keyReleased(KeyEvent e)

★注册监视器的方法:

addKeyListener()

★ KeyEvent类的方法:

publicint getKeyCode():返回键盘码。

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图形化界面练习及答案

作业标题:第四次练习题(总分:得分:分)一、单选题(共有题目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. 将两个单选框对象放在同一个面板上

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

全国计算机二级考试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考试题库第五章

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.360docs.net/doc/344540778.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 课程设计 简单图形界面计算器的设计 课程名称 Java程序设计 选题名称简单图形界面计算器的设计 专业 班级 姓名 学号 指导教师 简单图形界面计算器的设计

一、设计任务与目标 本次java程序设计我的设计任务是设计一个图形界面(GUI)的计算器应用程序并且能够完成简单的算术运算。本次任务的基本要求是这个计算器应用程序可以完成十进制的加、减、乘、除、求倒、取余、开方运算,且有小数点、正负号、退格和清零功能。而我要在此基础上添加一项千位符分隔符的功能,即以三位为一级,在输入的一串数字中每三位加入一个逗号,这项功能国际通用,并已经成为惯例,会计记账都用这种方法便于账目核算与管理。 GUI计算器设计的具体目标: 1.完成十进制的加、减、乘、除、求倒、取余和开方运算; 2.有小数点和正负号加入运算; 3.有退格、复位和清零的功能; 4.有千位符分隔符的功能,即在输入的一串数字中每三位加入一个逗号。 二、方案设计与论证 1.设计目标的总体分析 (1)设计目标的需求分析:计算器是现在一个普遍应用的工具,能够解决许多人工所无法计算的数据,节省大量宝贵的时间。 (2)设计目标的功能分析:实现计算器系统的功能,主要有两个功能模块:输入和输出。 (3)设计原则:基于计算器系统要具有适用性广、操作简便等特点,本系统预计要达到以下几个目标:①满足以上的基本功能要求;②能够在常见的计算机及其操作系统上运行。 2.设计的基本思路 利用GUI的界面设计,将整个大设计分为三块,分别是数据的输入,运算符

功能符的控制和数据的输入输出显示。利用Swing控件,数据的输入由0~9这10个按钮来表示,用“+”、“-”、“*”、“/”、“1/x”、“%”、“sqrt”这7个按钮来表示加、减、乘、除、求倒、取余、开方运算,用“.”和“±”这2个按钮来表示小数点和正负号,用“Back”、“CE”和“C”这3个按钮来表示退格、复位和清零的功能,数据的输入输出显示由文本字段来表示。将计算器的总体界面设计好后,再将代码分别写入不同的按钮的源程序中。 我要完成的一项改进,即添加一个拥有千位符分隔符功能的按钮,按下这个按钮能够在输入的一串数字中每三位加入一个逗号并且显示出来。我要在之前的界面设计的基础上多添加一个按钮“$”来表示千位符分隔符,并且将功能代码写入这个按钮的源程序中。 三、程序流程图,程序清单与调用关系 1. 程序流程图:

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.360docs.net/doc/344540778.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; }

相关文档
最新文档