基本操作

在考生文件夹中存有文件名为Java_1.java和Java_1.html的文件,Java_1.java是不完整的,请在注释行“//Found”下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。

本题的要求是:

完善Java_1.java文件,并进行调试(在命令行中使用appletviewer Java_1.html,或者使用集成开发环境)。

程序输出如下:

Java二级操作题第2套_2d

//*********Found********
import java.__________________.*;
import java.awt.Graphics;

//*********Found********
public class Java_1 extends __________________ {
public void paint( Graphics g )
{
//*********Found********
g.__________________( "欢迎你来参加Java 语言考试!", 25, 25 );
}
}

本题考查的是Applet的使用。
涉及到对继承知识点的考查。
在Java中,我们可以声明一个类扩展(extends)另一个类,即继承。继承使得一个类能够使用另一个类的属性和方法,就象使用自己的属性和方法一样。例如本题要求填写的是继承Applet类,这是因为类Java_1需要使用Applet类的方法paint。
Applet程序如下:

//*********Found********
import java.applet.*;
import java.awt.Graphics;

//*********Found********
public class Java_1 extends Applet{
public void paint( Graphics g )
{
//*********Found********
g.drawString( "欢迎你来参加Java 语言考试!", 25, 25 );
}
}

简单应用

在考生文件夹中存有文件名为Java_2.java和Java_2.html文件,Java_2.java是不完整的是不完整的,请在注释行"//Found"下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。

存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。

本题的要求是:在Applet中显示0至10的阶乘。请完善Java_2.java文件,并进行调试(在命令行中使用appletviewer Java_2.html,或者使用集成开发环境)。使运行结果为:

Java二级操作题第2套_java_02

import java.awt.*;
import java.applet.*;

//*********Found********
public class Java_2 extends _______________________
{
TextArea outputArea;

public void init()
{
setLayout(new BorderLayout());
outputArea = new TextArea();
//*********Found********
____________________( outputArea );

// 计算0至10的阶乘
for ( long i = 0; i <= 10; i++ )
//*********Found********
outputArea.append(i + "! = " + ______________ + "\n" );
}

// 用递归定义阶乘方法
public long factorial( long number )
{
if ( number <= 1 ) // 基本情况
return 1;
else
//*********Found********
return number * factorial( ___________ - 1 );
}
}

本题考查的是Applet的编写。
本题中的Applet程序必须是继承了java.applet.Applet的类。
具体的程序如下:

import java.awt.*;
import java.applet.*;

//*********Found********
public class Java_2 extends Applet
{
TextArea outputArea;

public void init()
{
setLayout(new BorderLayout());
outputArea = new TextArea();
//*********Found********
add( outputArea );

// 计算0至10的阶乘
for ( long i = 0; i <= 10; i++ )
//*********Found********
outputArea.append(i + "! = " +factorial(i)+ "\n" );
}

// 用递归定义阶乘方法
public long factorial( long number )
{
if ( number <= 1 ) // 基本情况
return 1;
else
//*********Found********
return number * factorial(number- 1 );
}
}

综合应用

在考生文件夹中丰有文件名为Java_3.java的文件。

该程序运行后的结果如下图所示:

Java二级操作题第2套_下划线_03

该程序是不完整的,请在注释行“//Found”下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;

public class Java_3
{
public static void main(String[] args)
{
FontFrame frame = new FontFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

//*********Found********
class FontFrame _________ JFrame
{
public FontFrame()
{
setTitle("沁园春.雪");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
FontPanel panel = new FontPanel();
Container contentPane = getContentPane();
//*********Found********
contentPane.add(___________________);
}
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}

//*********Found********
class FontPanel extends ________
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
String message = "数风流人物,还看今朝!";
Font f = new Font("隶书", Font.BOLD, 24);
g2.setFont(f);
FontRenderContext context = g2.getFontRenderContext();
Rectangle2D bounds = f.getStringBounds(message, context);
double x = (getWidth() - bounds.getWidth()) / 2;
double y = (getHeight() - bounds.getHeight()) / 2;
double ascent = -bounds.getY();
double baseY = y + ascent;
g2.setPaint(Color.RED);
//*********Found********
g2._________________(message, (int)x, (int)(baseY));
}
}

本题考查的是Swing构件和AWT中的事件处理。
1)类FontFrame的构造方法中有代码:“setTitle(“沁园春.雪”);“用于设置应用程序窗体的标题"沁园春.雪”,故FontFrame应该是JFrame的子类。因此第一空"class FontFrame ______ JFrame"应填"extends”。
2)类FontFrame的构造方法中有代码"FontPanel panel = new FontPanel();",因此第二空"contentPane.add()“应填"panel”。
3)类FontPanel的方法paintComponent(Graphics g)中的语句super.paintComponent(g);说明FontPanel覆盖了其父类的相应方法,而方法paintComponent(Graphics g)是抽象类javax.swing.JComponent中定义的,故FontPanel应是JComponent的子类。因此第三空"class FontPanel extends _____“应填"JPanel”。
4)FontPanel的paintComponent方法中的message存储了程序中要显示的字符串,且Graphics的drawString方法用来"输出"字符串,故第四空"g2.
(message,
(int)x, (int)(baseY));“应填"drawString”。

具体程序如下:

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;

public class Java_3
{
public static void main(String[] args)
{
FontFrame frame = new FontFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

//*********Found********
class FontFrame extends JFrame
{
public FontFrame()
{
setTitle("沁园春.雪");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
FontPanel panel = new FontPanel();
Container contentPane = getContentPane();
//*********Found********
contentPane.add(panel);
}
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}

//*********Found********
class FontPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
String message = "数风流人物,还看今朝!";
Font f = new Font("隶书", Font.BOLD, 24);
g2.setFont(f);
FontRenderContext context = g2.getFontRenderContext();
Rectangle2D bounds = f.getStringBounds(message, context);
double x = (getWidth() - bounds.getWidth()) / 2;
double y = (getHeight() - bounds.getHeight()) / 2;
double ascent = -bounds.getY();
double baseY = y + ascent;
g2.setPaint(Color.RED);
//*********Found********
g2.drawString(message, (int)x, (int)(baseY));
}
}

箴言:因为这些东西是非常简单的。不要抱怨自己学不会,那是因为你没有足够用心。