最新《Java程序设计》期末上机考试试题2套及答案合集文档格式.docx
《最新《Java程序设计》期末上机考试试题2套及答案合集文档格式.docx》由会员分享,可在线阅读,更多相关《最新《Java程序设计》期末上机考试试题2套及答案合集文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
![最新《Java程序设计》期末上机考试试题2套及答案合集文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/30/b74f1960-39dc-4701-a81e-5770c2489425/b74f1960-39dc-4701-a81e-5770c24894251.gif)
点击“按钮1”,则向文本区中追加一行字符串“java程序设计”,图(b)是点击该按钮3次后的显示结果;
点击“按钮2”,则弹出颜色选择对话框,并将选择的颜色设置为文本区中文字的颜色;
点击“按钮3”,则弹出颜色选择对话框,并将选择的颜色设置为文本区的背景颜色。
(a)(b)
4、请按照下面的描述编写以下两个java程序:
Test4.java和DrawPanel.java。
DrawPanel是继承自面板JPanel的面板子类,面板背景颜色设置为白色,大小为400×
400像素,该类实现了鼠标移动监听接口,响应鼠标移动和拖动事件,拖动鼠标时,把鼠标指针形状设置为十字形状,并通过面板的paint方法在面板中沿拖动路径画图(画笔的宽度设置为3.0f),为了能够将所画图形保存为jpg图片文件,首先把鼠标拖动所绘制的图形画在图像缓冲区(BufferedImage)中,然后将缓冲区的内容显示在面板中。
Test4类继承自JFrame,窗口大小为400×
400像素,窗口标题为“第4题”,窗口内容面板的布局为边框布局(BorderLayout),中间放置绘图面板类DrawPanel的对象,Test4类中设置了菜单条,并在菜单条上添加一个菜单“File”,该菜单下有3个菜单项:
“New”、“Save”和“Exit”,下图(a)所示,并按图示设置他们的快捷键。
各个菜单项的事件响应按下面的描述实现:
选择菜单项“New”,则把中间面板对象的背景色设置为白色,清除所画图形;
选择菜单项“Save”,则弹出文件保存对话框(JFileChooser),把中间面板中所画图形保存为jpg文件,下图(b)所示;
选择菜单项“Exit”,则退出程序的运行。
《Java程序设计》课程期末机考
卷A参考答案
(200x—200x学年第x学期)
______专业______年级本□专科☑A卷☑B卷□C卷□
1.(25分)参考程序:
importjava.awt.*;
importjavax.swing.*;
importjava.util.*;
publicclassTest1extendsJFrame{
JTextAreatext;
publicTest1(Strings){
super(s);
ContainercontentPane=getContentPane();
contentPane.setLayout(newBorderLayout());
text=newJTextArea(10,20);
//
Stringstr[]=newString[5];
Strings1="
排序前:
\n"
;
for(inti=0;
i<
str.length;
i++){
str[i]=JOptionPane.showInputDialog("
请输入字符串"
);
s1+=str[i]+"
\t"
}
text.setText(s1);
Arrays.sort(str);
Strings2="
\n排序后:
s2+=str[i]+"
text.append(s2);
contentPane.add(text,BorderLayout.CENTER);
setSize(400,160);
setVisible(true);
}
publicstaticvoidmain(String[]args){
Test1w=newTest1("
第一题"
}
2、(25分)参考程序:
importjava.io.*;
publicclassTest2{
publicstaticvoidmain(Stringargs[])throwsIOException{
Filefile1=newFile("
d:
\\xxx\\yyy\\zzz"
file1.mkdirs();
Filefile2=newFile(file1,"
1.txt"
file2.createNewFile();
Strings="
Ilikejava."
byte[]b=s.getBytes();
FileOutputStreamout=newFileOutputStream(file2);
out.write(b);
for(charch='
a'
ch<
='
z'
ch++){
out.write(ch);
out.close();
///////////////////////////
FileInputStreamreadfile=newFileInputStream(file2);
intb1;
while((b1=readfile.read())!
=-1){
System.out.print((char)b1);
}
readfile.close();
3、(25分)参考程序:
importjava.awt.event.*;
publicclassTest3extendsJFrame{
//文本区
JButtonbtn[]=newJButton[3];
publicTest3(Stringstr){
super(str);
contentPane.setLayout(newBorderLayout());
text=newJTextArea(20,20);
text.setFont(newFont("
楷体_gb2312"
Font.PLAIN,30));
//将文本区添加到窗口中间
JPanelpanel=newJPanel();
//创建缺省布局方式(FlowLayout)的面板
btn.length;
i++){//初始化5个按钮并添加到面板中
btn[i]=newJButton("
按钮"
+(i+1));
//循环创建5个按钮
panel.add(btn[i]);
//将按钮添加到面板中
//
btn[0].addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
text.append("
java程序设计\n"
});
btn[1].addActionListener(newActionListener(){
Colorcr=JColorChooser.showDialog(null,"
调色板"
Color.red);
text.setForeground(cr);
btn[2].addActionListener(newActionListener(){
text.setBackground(cr);
contentPane.add(panel,BorderLayout.NORTH);
//将面板添加到窗口北边
setSize(400,300);
publicstaticvoidmain(Stringargs[]){
newTest3("
第3题"
4、(25分)参考程序:
importjava.awt.event.*;
importjavax.swing.*;
importjava.awt.image.BufferedImage;
importjava.io.*;
importcom.sun.image.codec.jpeg.*;
publicclassTest4extendsJFrame{
DrawPaneldrawPanel;
publicTest4(){
super("
第4题"
ContainercontentPane=this.getContentPane();
drawPanel=newDrawPanel();
contentPane.add(drawPanel,BorderLayout.CENTER);
JMenumyMenu=buildMenu();
//菜单条
JMenuBarmenuBar=newJMenuBar();
//创建菜单条
setJMenuBar(menuBar);
//设置窗口具有菜单条
menuBar.add(myMenu);
//菜单添加到菜单条
this.setSize(400,400);
this.setVisible(true);
privateJMenubuildMenu(){
//菜单
JMenufileMenu=newJMenu("
File"
//菜单
fileMenu.setMnemonic(KeyEvent.VK_F);
//设置快捷键:
ALT+'
F'
//菜单项"
New"
JMenuItemfileNew=newJMenuItem("
//菜单项
fileNew.setMnemonic(KeyEvent.VK_N);
fileNew.addActionListener(newActionListener(){//菜单项事件处理
publicvoidactionPerformed(ActionEvente){//设置文本区字体大小
drawPanel.state=DrawPanel.CLEAR;
drawPanel.repaint();
fileMenu.add(fileNew);
Save"
JMenuItemfileSave=newJMenuItem("
fileSave.setMnemonic(KeyEvent.VK_S);
fileSave.addActionListener(newActionListener(){//菜单项事件处理
saveJPG(drawPanel.buffImage);
fileMenu.add(fileSave);
Exit"
JMenuItemfileExit=newJMenuItem("
fileExit.setMnemonic(KeyEvent.VK_X);
fileExit.addActionListener(newActionListener(){//菜单项事件处理
System.exit(0);
fileMenu.add(fileExit);
returnfileMenu;
//自定义方法:
打开保存文件对话框,保存缓冲区数据为jpg图像文件
privatevoidsaveJPG(BufferedImagebuffImage){
JFileChooserfilechooser=newJFileChooser("
./"
//文件选择器:
当前目录
intresult=filechooser.showSaveDialog(this);
//显示保存文件选择对话框
if(result==filechooser.APPROVE_OPTION){//点击对话框的"
保存"
按钮
Filefile=filechooser.getSelectedFile();
//得到保存文件对象
try{
FileOutputStreamout=newFileOutputStream(file);
//创建字节输出流
//将字节输出流out接上JPG编码器对象encoder
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(buffImage);
//图像数据编码并输出到文件file保存
//关闭流
catch(IOExceptionee){
ee.printStackTrace();
elseif(result==filechooser.CANCEL_OPTION){//点击对话框的"
撤消"
JOptionPane.showMessageDialog(null,"
图片没有保存"
"
提示信息"
JOptionPane.PLAIN_MESSAGE);
publicstaticvoidmain(String[]args){
newTest4();
}
//////////////////////////////////////////////
DrawPanel.java
importjava.awt.image.BufferedImage;
//程序中用到缓冲区画图
importjava.util.ArrayList;
//使用ArrayList保存鼠标拖动路径上的所有点
publicclassDrawPanelextendsJPanelimplementsMouseMotionListener{
intwidth=400,height=400;
staticfinalintDRAW=1,CLEAR=2;
intstate=0;
ArrayListarray=newArrayList();
//保存鼠标移动路径上的点坐标
BufferedImagebuffImage;
//图像缓冲区
Graphics2Dgg;
//图像缓冲区画笔
publicDrawPanel(){//构造方法
setBackground(Color.white);
//设置面板背景色为白色
//创建图像缓冲区,大小为480、400
buffImage=newBufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
gg=buffImage.createGraphics();
//创建缓冲区画笔
gg.setColor(Color.white);
//设置缓冲区画笔颜色
gg.fillRect(0,0,width,height);
//画缓冲区的白色背景
addMouseMotionListener(this);
//对面板增加鼠标监听
//把鼠标拖动路径上的点先画在缓冲区中,再把缓冲区画在在面板中
publicvoidpaint(Graphicsg){
super.paint(g);
gg.setColor(Color.red);
Graphics2Dg2d=(Graphics2D)g;
//把父类对象强制转化为子类对象
if(state==DRAW){//state值为1,表示画图
gg.setStroke(newBasicStroke(3.0f));
//设置缓冲区画笔的宽度
Pointp1,p2;
//声明两个点类对象
array.size()-1;
i++){//循环array的所有点
p1=(Point)array.get(i);
//得到第1个点
p2=(Point)array.get(i+1);
//得到相邻的下一个点
gg.drawLine(p1.x,p1.y,p2.x,p2.y);
//画相邻两点间的线
elseif(state==CLEAR){//state值为2,表示清除面板上的画图
gg.setColor(getBackground());
//设置缓冲区画笔为当前背景颜色white
//画缓冲区为背景颜色---清除画图
//把缓冲区中的画图显示在面板上
g2d.drawImage(buffImage,0,0,width,height,this);
publicDimensiongetPreferredSize(){
returnnewDimension(width,height);
//面板显示大小为450×
400像素
//鼠标移动时:
清空array中所有元素,为下一次拖动初始化array
publicvoidmouseMoved(MouseEvente){
//设置鼠标移动时,鼠标光标形状为:
手形
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
array.clear();
//清空array中所有元素
//鼠标拖动时,得到拖动路径上的所有点
publicvoidmouseDragged(MouseEvente){
state=DRAW;
//设置鼠标拖动时,鼠标光标形状为:
十字形
setCu