【计算机二级Java语言】卷004
选择题
公共知识
【1】下列数据结构中, 属于非线性结构的是()。
树是简单的非线性结构, 所以二叉树作为树的一种也是一种非线性结构。
【2】下列数据结构中, 能够按照"先进后出"原则存取数据的是()。
栈是按先进后出的原则组织数据的;
队列按先进先出的原则组织数据。
【3】对于循环队列, 下列叙述中正确的是()。
循环队列的队头指针与队尾指针都不是固定的, 随着入队与出队操作要进行变化。
因为是循环利用的队列结构, 所以对头指针有时可能大于队尾指针有时也可能小于队尾指针。
因为是循环利用的队列结构, 所以对头指针有时可能大于队尾指针有时也可能小于队尾指针。
【4】算法的空间复杂度是指()。
算法的空间复杂度是指算法在执行过程中所需要的内存空间。
所以选择A。
所以选择A。
【5】软件设计中划分模块的一个准则是()。
一般较优秀的软件设计, 应尽量做到高内聚, 低耦合, 即减弱模块之间的耦合性和提高模块内的内聚性, 有利于提高模块的独立性。
【6】下列选项中不属于结构化程序设计原则的是()。
结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句, 所以选择A。
【7】软件详细设计生产的图如下:
该图是()。
该图是()。
N - S图提出了用方框图来代替传统的程序流程图, 所以A不对。
PAD图是问题分析图, 它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具, 所以B不对。
E - R图是数据库中的用于表示E - R模型的图示工具, 所以D不对。
根据图中所示表示方法是进行软件详细设计时使用的程序流程图。
PAD图是问题分析图, 它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具, 所以B不对。
E - R图是数据库中的用于表示E - R模型的图示工具, 所以D不对。
根据图中所示表示方法是进行软件详细设计时使用的程序流程图。
【8】数据库管理系统是()。
数据库管理系统是数据库的机构, 它是一种系统软件, 负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。
是一种在操作系统之上的系统软件。
是一种在操作系统之上的系统软件。
【9】在E - R图中, 用来表示实体联系的图形是()。
在E - R图中实体集用矩形表示, 属性用椭圆表示, 联系用菱形表示。
【10】定义学生的关系模式如下:
S(S#, Sn, Sex, Age, D#, Da)(其属性分别为学号、姓名、性别、年龄、所属学院、院长)
该关系的范式最高是()。
关系数据库中的关系是要满足一定要求的, 满足不同程度要求的为不同的范式。
满足最低要求的叫第一范式, 简称1NF。
在满足第一范式的基础上, 进一步满足更多要求规范则是第二范式。
然后在满足第二范式的基础上, 还可以再满足第三范式, 以此类推。
满足最低要求的叫第一范式, 简称1NF。
在满足第一范式的基础上, 进一步满足更多要求规范则是第二范式。
然后在满足第二范式的基础上, 还可以再满足第三范式, 以此类推。
对于关系模式, 若其中的每个属性都已不能再分为简单项, 则它属于第一范式。
若某个关系R为第一范式, 并且R中每一个非主属性完全依赖于R的某个候选键, 则称其为第二范式。
第二范式消除了非主属性对主键的部分依赖。
如果关系R是第二范式, 并且每个非主属性都不传递依赖于R的候选键, 则称R为第三范式。
(传递依赖:在关系模式中, 如果Y→X, X→A, 且X不决定Y和A不属于X, 那么Y→A是传递依赖。
)本题中, 关系S满足第一范式和第二范式, 但是S#→D#, D#→Da, 存在传递依赖, 因此不满足第三范式。
该关系的范式最高是2NF。
专业知识
【11】Java程序的并发机制是
多线程是Java程序的并发机制, 它能同步共享数据、处理不同的事件。
本题答案为A选项。
本题答案为A选项。
【12】下列变量名的定义中, 符合Java命名约定的是
变量名以字母、下划线或者美元符$开头, 不能以数字开头, 后面跟字母、下划线、美元符、数字, 变量名对大小写敏感。
Java命名约定的是按照驼峰式写法, 除第一个单词外, 其余每个单词首字母大写。
本题答案为A选项。
Java命名约定的是按照驼峰式写法, 除第一个单词外, 其余每个单词首字母大写。
本题答案为A选项。
【13】Java中定义常量的关键字是
final关键字是定义常量变量的保留字, 说明该变量赋值以后永不改变, 变量初值是该变量的默认值。
本题答案为B选项。
本题答案为B选项。
【14】下列选项中, 类型为int的表达式是
选项A、B中的"+"是字符串拼接操作。
选项D中'45'不能表示字符, 字符中只能有一个字符; 选项C是两个字符相加, 也就是两个字符对应的ASCII码值相加, 结果为int型。
本题答案为C选项。
选项D中'45'不能表示字符, 字符中只能有一个字符; 选项C是两个字符相加, 也就是两个字符对应的ASCII码值相加, 结果为int型。
本题答案为C选项。
【15】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int i = 0;
System.out.println(i == 1 ? 2 : 3);
}
}
本题考查条件表达式。
条件表达式为:布尔表达式?值1:值2; 当布尔表达式为true时, 表达式的结果为值1, 布尔表达式为false时, 条件表达式的值为值2; 本题布尔表达式为false, 结果为3。
本题答案为D选项。
条件表达式为:布尔表达式?值1:值2; 当布尔表达式为true时, 表达式的结果为值1, 布尔表达式为false时, 条件表达式的值为值2; 本题布尔表达式为false, 结果为3。
本题答案为D选项。
【16】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int i = 6, j = 5;
boolean w = i % 4 > j;
System.out.println(w);
}
}
求余运算符"%", "6%4"结果为2, "2>j"的值为false。
w的值为false。
本题答案为D选项。
w的值为false。
本题答案为D选项。
【17】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int a = 2, b = 3, c = 5;
System.out.println(a++ * b + --c);
}
}
本题考查算术运算符的应用。
后置"++"表示先参与运算再自身+1; 前置"--"表示先自身-1再参与运算。
"a ++ * b + --c=2*3+4=10", 程序输出打印10。
本题答案为A选项。
后置"++"表示先参与运算再自身+1; 前置"--"表示先自身-1再参与运算。
"a ++ * b + --c=2*3+4=10", 程序输出打印10。
本题答案为A选项。
【18】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int x = 5;
change(x);
System.out.print(" " + x);
}
static void change(int x) {
x = x * 10;
System.out.print(" " + x);
}
}
main函数中调用了change()方法, 在change()方法中形参x的值为10并打印输出。
因为形参x是局部变量, 方法执行后释放变量。
接着执行main()方法中的打印输出语句, 此时输出main()方法中的局部变量x, 它的值为5。
本题答案为B选项。
因为形参x是局部变量, 方法执行后释放变量。
接着执行main()方法中的打印输出语句, 此时输出main()方法中的局部变量x, 它的值为5。
本题答案为B选项。
【19】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int n = 65;
n = n / 10;
switch (n) {
case 6:
System.out.print("C");
case 5:
System.out.print("D");
}
}
}
运算符"/"两边的运算对象都是整型时, 运算的结果为整型, 则"n / 10"的结果为6。
匹配case值输出C, case中如果没有break关键字, 会进行渗透操作, 一直执行下去, 直到结束。
程序输出"CD"。
本题答案为C选项。
匹配case值输出C, case中如果没有break关键字, 会进行渗透操作, 一直执行下去, 直到结束。
程序输出"CD"。
本题答案为C选项。
【20】下列程序的运行结果是
public class Test {
public static void main(String[] args) {
int s = 0;
for (int i = 1; i <= 10; i++)
for (int j = 1; j <= 5; j++) {
if (j % 3 == 0)
break;
s = s + j;
}
System.out.println(s);
}
}
本题考查for循环嵌套的应用, 运算符"%"位取余操作。
内循环中, j = 3时, if条件满足执行break语句, 跳出内循环, 执行"s=s+j"。
外循环一个共执行10次, 也就是累加3, 累计加了10次, 所以程序最终输出30。
本题答案为C选项。
内循环中, j = 3时, if条件满足执行break语句, 跳出内循环, 执行"s=s+j"。
外循环一个共执行10次, 也就是累加3, 累计加了10次, 所以程序最终输出30。
本题答案为C选项。
【21】下列程序的运行结果是
public class Person {
static int[] arr = new int[10];
public static void main(String[] args) {
System.out.println(arr[9]);
}
}
数组没有进行初始化操作时, 元素按默认值存储。
整数类型默认值为0, 浮点类型默认值为0.0, 引用类型默认值为null, 字符类型默认值为\u0000。
本题的数组类型为int类型, 默认值为0。
本题答案为C选项。
整数类型默认值为0, 浮点类型默认值为0.0, 引用类型默认值为null, 字符类型默认值为\u0000。
本题的数组类型为int类型, 默认值为0。
本题答案为C选项。
【22】Object类中的方法 public int hashCode(), 在其子类中覆盖该方法时, 其方法修饰符可以是
子类覆写父类的方法时, 重写方法不能比被重写方法有更严格的访问级别。
父类的修饰符为public, 子类重写此方法时, 修饰符也为public。
本题答案为B选项。
父类的修饰符为public, 子类重写此方法时, 修饰符也为public。
本题答案为B选项。
【23】Java程序默认引用的包是
java.lang包提供Java编程语言进行程序设计的基础类。
java.lang包是编译器自动导入的。
本题答案为C选项。
java.lang包是编译器自动导入的。
本题答案为C选项。
【24】下列叙述中, 错误的是
把类定义在另一个类的内部, 该类就被称为内部类。
内部类的类名不能与定义它的类的名称相同。
本题答案为A选项。
内部类的类名不能与定义它的类的名称相同。
本题答案为A选项。
【25】在方法内部使用, 代表对当前对象自身引用的关键字是
super关键字为实现对父类变量的访问和对父类方法的调用。
对当前对象自身的引用应使用this关键字。
本题答案为D选项。
对当前对象自身的引用应使用this关键字。
本题答案为D选项。
【26】下列程序的运行结果是
public class Test {
private String[] data = { "10", "10.5" };
public void fun() {
double s = 0;
for (int i = 0; i < 3; i++) {
try {
s = s + Integer.parseInt(data[i]);
} catch (Exception e) {
System.out.print("error1: " + data[i]);
}
}
}
public static void main(String[] args) {
try {
Test d = new Test();
d.fun();
} catch (Exception e) {
System.out.println(" error2");
}
}
}
程序中定义了数组data长度为2, 访问数组元素的下标为0 ~ 1。
在fun()函数中, for循环的i变量值从0到2, 当i = 2时, 访问数组越界, 报数组越界异常。
执行catch语句捕获异常, 此时输出"error:10.5"。
在catch语句中执行了data[i], 仍然抛出异常, 此时捕获异常的语句是main()函数的catch语句, 输出"error2"。
本题答案为C选项。
在fun()函数中, for循环的i变量值从0到2, 当i = 2时, 访问数组越界, 报数组越界异常。
执行catch语句捕获异常, 此时输出"error:10.5"。
在catch语句中执行了data[i], 仍然抛出异常, 此时捕获异常的语句是main()函数的catch语句, 输出"error2"。
本题答案为C选项。
【27】下列能表示字符串s1长度的是
java中表示字符串长度的方法是length()方法。
本题答案为B选项。
本题答案为B选项。
【28】阅读下面求质数的程序, 在下划线处应填入的选项是
import java.lang.Math.*;
public class MorePrimesTest {
public static void main(String[] args) {
long[] primes = new long[20];
primes[0] = 2L;
primes[1] = 3L;
long number = 5L;
outer : for (int count = 2; count < primes.length; number += 2L) {
long limit = (long) Math.ceil(Math.sqrt((double) number));
for (int i = 1; i < count && primes[i] <= limit; i++) {
if (number_____ primes[i] == 0L) {
continue outer;
}
}
primes[count++] = number;
}
for (int j = 0; j < primes.length; j++) {
long n = primes[j];
System.out.println(n);
}
}
}
本题是求从2开始的20个质数, 存放于数组primes中, 并打印这个数组。
质数是指在大于1的自然数中, 除了1和它本身以外不再有其他因数的自然数。
判断number是不是质数, 将number与primes[i]求余, 如果能整除, 表示不是质数, 在判断一下个数。
所以下划线初填写求余符号"%"。
本题答案为D选项。
质数是指在大于1的自然数中, 除了1和它本身以外不再有其他因数的自然数。
判断number是不是质数, 将number与primes[i]求余, 如果能整除, 表示不是质数, 在判断一下个数。
所以下划线初填写求余符号"%"。
本题答案为D选项。
【29】已知zipname是一个压缩文件名。则zipname 在下列代码中出现的正确位置是
ZipInputStream zin = new ZipInputStream(new FileInputStream(①));
ZipEntry entry;
while ((entry = zin.getNextEntry(②)) != null) {
fileCombo.addItem(entry.getName(③));
zin.closeEntry(④);
}
zin.close();
ZipInputStream类的构造函数为, DataInputStream(InputStream in), 需要构造一个输入流对象作为构造函数的参数 。
new FileInputStream()需要穿输入文件名, 生成输入流对象。
本题答案为A选项。
new FileInputStream()需要穿输入文件名, 生成输入流对象。
本题答案为A选项。
【30】Java中类ObjectOutputStream支持对象的写操作, 这是一种字节流, 它的直接父类是
ObjectOutputStream是字节流, 所有的字节输出流都是OutputStream抽象类的子类。
ObjectOutputStream既继承了OutputStream抽象类, 又实现了ObjectOutput接口, Java用接口技术代替双重继承。
本题答案为C选项。
ObjectOutputStream既继承了OutputStream抽象类, 又实现了ObjectOutput接口, Java用接口技术代替双重继承。
本题答案为C选项。
【31】阅读下列程序
import java.io.*;
public class ByteStreamTest {
public static void main(String[] a) {
int[] myArray = { 10, 20, 30, 40 };
try {
DataOutputStream dos = new DataOutputStream(new __________("ints.dat"));
for (int i = 0; i < myArray.length; i++)
dos.writeInt(myArray[i]);
dos.close();
System.out.println("Have written binary file ints.dat");
} catch (IOException ioe) {
System.out.println("IO Exception");
}
}
}
为保证程序正确运行, 在程序中下划线处应填入的代码是
二进制文件可作为类FileOutputStream构造方法的参数, 而FileOutputStream对象作为DataOutputStream的构造方法的参数实现DataOutputStream类。
本程序中, "ints.dat"文件作为FileOutputStream对象构造方法的参数, 然后FileOutputStream对象作为字节输出流的形参。
本题答案为A选项。
本程序中, "ints.dat"文件作为FileOutputStream对象构造方法的参数, 然后FileOutputStream对象作为字节输出流的形参。
本题答案为A选项。
【32】下列代码将对象写入的设备是
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bout);
out.writeObject(this);
out.close();
ObjectOutputStream类的构造方法是ObjectOutputStream(OutputStream out)。
Java中的二进制流全都写入到内存中。
本题答案为D选项。
Java中的二进制流全都写入到内存中。
本题答案为D选项。
【33】用鼠标点击菜单项(MenuItem)产生的事件是
ActionEvent是组件事件, 当特定于组件的动作(比如被按下)发生时, 由组件(比如Button)生成此高级别事件。
事件被传递给每一个ActionListener对象, 这些对象是使用组件的addActionListener方法注册的, 用以接收这类事件。
本题答案为B选项。
事件被传递给每一个ActionListener对象, 这些对象是使用组件的addActionListener方法注册的, 用以接收这类事件。
本题答案为B选项。
【34】下列不属于Swing的构件是
Swing构件中JButton是按钮构件, JLabel为标签构件, JFrame为顶层窗体容器构件。
中间容器面板应为JPanel, 而不是JPane。
本题答案为D选项。
中间容器面板应为JPanel, 而不是JPane。
本题答案为D选项。
【35】下列为窗口事件的是
"WindowEvent"属于窗口事件。
本题答案为B选项。
本题答案为B选项。
【36】下列有关Java线程的说法中, 正确的是
Java中的线程模型包括虚拟的CPU、程序代码以及代码操作的数据三部分, 选项A错误;
java中可以一次执行多个线程, 线程并发执行, 选项B错误;
线程启动只有start()方法, 选项C正确;
不光只有java支持多线程并发设计, C语言, C++语言都支持。
本题答案为C选项。
本题答案为C选项。
【37】关于下列代码编译或执行结果的描述中, 正确的是
public class Test {
public static void main(String[] args) {
TestThread pm1 = new TestThread("One");
pm1.start();
TestThread pm2 = new TestThread("Two");
pm2.start();
}
}
class TestThread extends Thread {
private String sTname = "";
TestThread(String s) {
sTname = s;
}
public void run() {
for (int i = 0; i < 2; i++) {
try {
sleep(1000);
} catch (InterruptedException e) {
}
System.out.print(sTname + " ");
}
}
}
启动两个线程, 线程之间没有进行同步, 所以B和C均有可能。
选项D正确。
本题答案为D选项。
选项D正确。
本题答案为D选项。
【38】可以使当前同优先级线程重新获得运行机会的方法是
本题考查线程的基本控制。
Thread类提供的基本线程控制方法包括:sleep():使比其低的优先级线程运行, 可以让一个线程暂停运行一段固定的时间; yield():使具有与当前线程相同优先级的线程有运行的机会; join():使当前线程暂停执行, 等待调用该方法的线程结束后, 再恢复执行; interrupt():中断线程的阻塞状态, 并且线程接收到InterruptException异常。
根据上述介绍可知, 只有yield()方法可以使当前同级线程重新获得运行机会。
本题答案为A选项。
Thread类提供的基本线程控制方法包括:sleep():使比其低的优先级线程运行, 可以让一个线程暂停运行一段固定的时间; yield():使具有与当前线程相同优先级的线程有运行的机会; join():使当前线程暂停执行, 等待调用该方法的线程结束后, 再恢复执行; interrupt():中断线程的阻塞状态, 并且线程接收到InterruptException异常。
根据上述介绍可知, 只有yield()方法可以使当前同级线程重新获得运行机会。
本题答案为A选项。
【39】下列叙述中, 错误的是
本题考查Java线程的同步机制。
如果程序中多个线程互相等待对方持有的锁, 而在得到对方锁之前都不会释放自己的锁, 这就造成了都想得到资源而又都得不到, 线程小能继续运行, 这就是死锁。
Java中没有检测与避免死锁的专门机制, 因此完全由程序进行控制, 防止死锁的发生。
应用程序可以采用的一般做法是:如果程序要访问多个共享数据, 则要首先从全局考虑定义一个获得锁的顺序, 并且在整个程序中都遵守这个顺序。
释放锁时, 要按照加锁的反序释放。
本题答案为D选项。
如果程序中多个线程互相等待对方持有的锁, 而在得到对方锁之前都不会释放自己的锁, 这就造成了都想得到资源而又都得不到, 线程小能继续运行, 这就是死锁。
Java中没有检测与避免死锁的专门机制, 因此完全由程序进行控制, 防止死锁的发生。
应用程序可以采用的一般做法是:如果程序要访问多个共享数据, 则要首先从全局考虑定义一个获得锁的顺序, 并且在整个程序中都遵守这个顺序。
释放锁时, 要按照加锁的反序释放。
本题答案为D选项。
【40】当一个Applet被加载, 后续对Applet 生命周期方法的调用中, 可能存在的次序是
init()方法一般用来完成所有必需的初始化操作;
start()是在初始化之后Applet被加载时调用;
stop()在Applet停止执行时调用, destory()是Applet从系统中撤出时调用。
选项B正确, 本题答案为B。
选项B正确, 本题答案为B。
编程题
【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
程序的功能是:创建两个线程, 每个线程每次会输出一个累计增加的整数和线程名("第1"或"第2"), 共计5次。最后, 两个线程输出"运行!"与线程名。程序的某次运行结果如下:
0 第1
0 第2
1 第1
1 第2
2 第1
2 第2
3 第1
3 第2
4 第1
4 第2
运行 !第1
运行 !第2
程序的功能是:创建两个线程, 每个线程每次会输出一个累计增加的整数和线程名("第1"或"第2"), 共计5次。最后, 两个线程输出"运行!"与线程名。程序的某次运行结果如下:
0 第1
0 第2
1 第1
1 第2
2 第1
2 第2
3 第1
3 第2
4 第1
4 第2
运行 !第1
运行 !第2
(1) String
(2) Thread
(3) getName
本题考查:java中线程的应用以及main方法的语法格式。
(1) java中, 程序的main方法入口为:public static void main(String args[]) { }
(2) 创建线程有两种方式, 继承Thread类, 实现Runnable接口, 程序给的是关键字extends, 这里是继承Thread类。
(3) 这里需要获取的是线程的名字, 可以通过getName()方法获取线程的名称。
(1) java中, 程序的main方法入口为:public static void main(String args[]) { }
(2) 创建线程有两种方式, 继承Thread类, 实现Runnable接口, 程序给的是关键字extends, 这里是继承Thread类。
(3) 这里需要获取的是线程的名字, 可以通过getName()方法获取线程的名称。
【42】在考生文件夹中存有文件名为Java_2.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
程序的功能是:程序中定义了抽象类Person 和其两个具体子类 Worker 和 Student, 并定义类 Worker 和 Student的实例各一个, 显示了两个实例的描述信息。程序运行时输出结果如下:
程序的功能是:程序中定义了抽象类Person 和其两个具体子类 Worker 和 Student, 并定义类 Worker 和 Student的实例各一个, 显示了两个实例的描述信息。程序运行时输出结果如下:
(1) p.getName
(2) abstract
(3) abstract
(4) extends
(5) extends
本题考查:抽象类的定义、抽象方法的定义以及类的继承。
(1) 由程序运行结果可以得知获取的是Person对象中的name属性值, getName()获取对象的name值。
(2) 使用"abstract"定义抽象类。
(3) 可知getDescription()方法为抽象方法, 用关键字"abstract"修饰。
(4) Worker类继承Person类。
(5) Student类继承Person类。
(1) 由程序运行结果可以得知获取的是Person对象中的name属性值, getName()获取对象的name值。
(2) 使用"abstract"定义抽象类。
(3) 可知getDescription()方法为抽象方法, 用关键字"abstract"修饰。
(4) Worker类继承Person类。
(5) Student类继承Person类。
【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。在考生文件夹中存有文件名为Java_3.java文件和两个图形文件 014.JPG和306.JPG。
本题的要求是:
在图形用户界面中, 在JFrame窗口的左上方, 有一个"红军不怕远征难"的字符串, 用户可以通过窗口中的 File菜单下的Open子菜单来选择014.JPG图片或306.JPG图片, 并将选中的图片显示出来。在窗口下方有一个选择框可对"红军不怕远征难" 的字符串进行字体选择。该程序运行时的界面如下显示:
在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。在考生文件夹中存有文件名为Java_3.java文件和两个图形文件 014.JPG和306.JPG。
本题的要求是:
在图形用户界面中, 在JFrame窗口的左上方, 有一个"红军不怕远征难"的字符串, 用户可以通过窗口中的 File菜单下的Open子菜单来选择014.JPG图片或306.JPG图片, 并将选中的图片显示出来。在窗口下方有一个选择框可对"红军不怕远征难" 的字符串进行字体选择。该程序运行时的界面如下显示:
选择306.JPG图片后显示如下:
选择014.JPG图片后显示如下:
本题的要求是:
在图形用户界面中, 在JFrame窗口的左上方, 有一个"红军不怕远征难"的字符串, 用户可以通过窗口中的 File菜单下的Open子菜单来选择014.JPG图片或306.JPG图片, 并将选中的图片显示出来。在窗口下方有一个选择框可对"红军不怕远征难" 的字符串进行字体选择。该程序运行时的界面如下显示:
在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。在考生文件夹中存有文件名为Java_3.java文件和两个图形文件 014.JPG和306.JPG。
本题的要求是:
在图形用户界面中, 在JFrame窗口的左上方, 有一个"红军不怕远征难"的字符串, 用户可以通过窗口中的 File菜单下的Open子菜单来选择014.JPG图片或306.JPG图片, 并将选中的图片显示出来。在窗口下方有一个选择框可对"红军不怕远征难" 的字符串进行字体选择。该程序运行时的界面如下显示:
选择306.JPG图片后显示如下:
选择014.JPG图片后显示如下:
(1)true(2)File(3)menu(4)chooser(5)faceCombo
本题考查:swing窗口构件、监听器以及IO流的使用。
(1) 显示窗口使用setVisible()方法, 其中的布尔参数为true。
(2) JMenu创建对象时, 构造函数中初始化值即为File菜单名称。
(3) 在添加完菜单条后, 并不会显示任何菜单, 所以还需要在菜单条中添加菜单。
(4) JFileChooser类提供文件选择窗口, 这里填写chooser。
(5) JComboBox下拉列表框, 选择其中的选项"字体"。
(1) 显示窗口使用setVisible()方法, 其中的布尔参数为true。
(2) JMenu创建对象时, 构造函数中初始化值即为File菜单名称。
(3) 在添加完菜单条后, 并不会显示任何菜单, 所以还需要在菜单条中添加菜单。
(4) JFileChooser类提供文件选择窗口, 这里填写chooser。
(5) JComboBox下拉列表框, 选择其中的选项"字体"。