Java二级操作题第2套
基本操作
在考生文件夹中存有文件名为Java_1.java和Java_1.html的文件,Java_1.java是不完整的,请在注释行“//Found”下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。
本题的要求是:
完善Java_1.java文件,并进行调试(在命令行中使用appletviewer Java_1.html,或者使用集成开发环境)。
程序输出如下:
//*********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,或者使用集成开发环境)。使运行结果为:
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的文件。
该程序运行后的结果如下图所示:
该程序是不完整的,请在注释行“//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));
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!