《Java程序设计》课程期末机考 卷A参考答案 (200x一200x学年第x学期) 专业 年级本口专科☑A卷☑B卷和C卷 1.(25分)参考程序: import iava awt * public class Test1 extends JFrame JTextArea text Container contentPane=getContentPane(). String s$tr-JOptionPane..showInputDialog("请输入字符串"方 s1+=str可+"t": 序后: a 2、(25分)参考程序 t iava io public class Test2
1 《Java 程序设计》课程 期末机考 卷 A 参考答案 (200x—200x 学年 第 x 学期) ______专业______年级 本□ 专科 A 卷 B 卷□ C 卷□ 1.(25 分)参考程序: import java.awt.*; import javax.swing.*; import java.util.*; public class Test1 extends JFrame { JTextArea text; public Test1(String s) { super(s); Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout( )); text=new JTextArea(10,20); // String str[]=new String[5]; String s1="排序前:\n"; for(int i=0;i<str.length;i++){ str[i]=JOptionPane.showInputDialog("请输入字符串"); s1+=str[i]+"\t"; } text.setText(s1); Arrays.sort(str); String s2="\n 排序后:\n"; for(int i=0;i<str.length;i++){ s2+=str[i]+"\t"; } text.append(s2); // contentPane.add(text,BorderLayout.CENTER); setSize(400,160); setVisible(true); } public static void main (String[] args) { Test1 w=new Test1("第一题"); } } 2、(25 分)参考程序: import java.io.*; public class Test2 {
IOException filel.mkdirs(); String s="Ilike java." =new FileOutputStream(file2). out write(b) for(cha dch<=zcht+) (ch) uclose0 FilelnputStream readfile=new FilelnputStream(file2): int bl; while((b readfile.close(). 3、(25分)参考程序: import java.awt.* public class Test3 extends JFrame ITextarea text/∥文本区 JButton btn[]=new JButton[3]; conten Font(ne y 区添加到窗口中间 的面板 for( 面板中 循环创建5个 panel..add(btn/将按钮添加到面板中 bin[0].addActionListen text.append("java程序设计ln", btn[1]addActionListener(new ActionListener( publicvoid actionPerformed(ActionEvente) Color cr-JColorChooser.showDialog(nul,"调色板",Color.red)
2 public static void main(String args[])throws IOException{ File file1=new File("d:\\xxx\\yyy\\zzz"); file1.mkdirs(); File file2=new File(file1,"1.txt"); file2.createNewFile(); String s="I like java."; byte[] b=s.getBytes(); FileOutputStream out=new FileOutputStream(file2); out.write(b); for(char ch='a';ch<='z';ch++){ out.write(ch); } out.close(); /////////////////////////// FileInputStream readfile=new FileInputStream(file2); int b1; while((b1=readfile.read())!=-1){ System.out.print((char)b1); } readfile.close(); } } 3、(25 分)参考程序: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test3 extends JFrame { JTextArea text;//文本区 JButton btn[]=new JButton[3]; public Test3(String str){ super(str); Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); text=new JTextArea(20,20); text.setFont(new Font("楷体_gb2312",Font.PLAIN,30)); contentPane.add(text,BorderLayout.CENTER);//将文本区添加到窗口中间 JPanel panel=new JPanel();//创建缺省布局方式(FlowLayout)的面板 for(int i=0;i<btn.length;i++){//初始化 5 个按钮并添加到面板中 btn[i]=new JButton("按钮"+(i+1));//循环创建 5 个按钮 panel.add(btn[i]);//将按钮添加到面板中 } // btn[0].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { text.append("java 程序设计\n"); } }); btn[1].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { Color cr=JColorChooser.showDialog(null,"调色板",Color.red);
textsetForeground(cr): btn[2].addActionListener(new ActionListener( public daction log(nul,"调色板",Color.red) contentPane..add(panel,BorderLayout NORTH):/I将面板添加到窗口北边 ee0 oid main(St 4、(25分)参考程序 mport java.awt mport image BufferedImage. import cmmage co public class Test4 extends JFrame DrawPanel drawPanel public Test4(! super("第4题") derLayout)】 drawPa (drawPanel.BorderLayout.CENTER) JMenu myMenu=buildMenu(); 单条 /创建菜单条 川设置窗口具有菜单冬 menuBar..add(myMenu),/菜单添加到莱单条 private 3
3 text.setForeground(cr); } }); btn[2].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { Color cr=JColorChooser.showDialog(null,"调色板",Color.red); text.setBackground(cr); } }); // contentPane.add(panel,BorderLayout.NORTH);//将面板添加到窗口北边 setSize(400,300); setVisible(true); } public static void main(String args[]){ new Test3("第 3 题"); } } 4、(25 分)参考程序: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.image.BufferedImage; import java.io.*; import com.sun.image.codec.jpeg.*; public class Test4 extends JFrame{ DrawPanel drawPanel; public Test4(){ super("第 4 题"); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); drawPanel=new DrawPanel(); contentPane.add(drawPanel,BorderLayout.CENTER); JMenu myMenu=buildMenu(); //菜单条 JMenuBar menuBar = new JMenuBar(); //创建菜单条 setJMenuBar(menuBar);//设置窗口具有菜单条 menuBar.add(myMenu); //菜单添加到菜单条 this.setSize(400,400); this.setVisible(true); } private JMenu buildMenu(){ //菜单 JMenu fileMenu = new JMenu("File"); //菜单 fileMenu.setMnemonic(KeyEvent.VK_F); //设置快捷键:ALT+'F
∥菜单项"New JMenultem fileNew=-new JMenultem("Nev∥菜单项 ner(菜单项事件处理 A wPanel.CLEAR: {设置文本区字体大小 drawPanel.repaint(): add Actionl ist ActionListener({/菜单项事件处理 public(ActionEvente)设置文本区字体大小 saveJPG(drawPanel.buffImage): eave). "Exit wJMenuItem("Exit'")方∥菜单项 vent. Public d(A istener(){U/菜单项事件处理 川设置文本区字体大小 System.exit(0); fileMenu.add(fileExit) return fileMenu 自定义方法:打开保存文件对话框 保存缓冲区数据为jpg图像文件 m文件选择器:当前目录 int result=filechooser山owsavedialoo(this)∥昆示保存文件洗择时话相 if(result=一-filechooser..APPROVE_OPTION){∥点击对话框的"保存"按钮 file-=filechooser..getSelectedFile(,/得到保存文件对象 try am ou am(file∥创建字节输出流 Enco out ode encoder.encode(buffimage.)/图像数据编码并输出到文件e保存 out.close(O,I∥关闭流 =filechooser.CANCEL_OPTION)∥点击对话框的"撒消"按钮 IontionPane showMessageDialo (nul,"图片没有保存 提示信息ame PLAIN MESSAGE方
4 //菜单项 "New" JMenuItem fileNew= new JMenuItem("New"); //菜单项 fileNew.setMnemonic(KeyEvent.VK_N); fileNew.addActionListener(new ActionListener(){//菜单项事件处理 public void actionPerformed(ActionEvent e) {//设置文本区字体大小 drawPanel.state=DrawPanel.CLEAR; drawPanel.repaint(); } }); fileMenu.add(fileNew); //菜单项 "Save" JMenuItem fileSave= new JMenuItem("Save"); //菜单项 fileSave.setMnemonic(KeyEvent.VK_S); fileSave.addActionListener(new ActionListener(){//菜单项事件处理 public void actionPerformed(ActionEvent e) {//设置文本区字体大小 saveJPG(drawPanel.buffImage); } }); fileMenu.add(fileSave); //菜单项 "Exit" JMenuItem fileExit= new JMenuItem("Exit"); //菜单项 fileExit.setMnemonic(KeyEvent.VK_X); fileExit.addActionListener(new ActionListener(){//菜单项事件处理 public void actionPerformed(ActionEvent e) {//设置文本区字体大小 System.exit(0); } }); fileMenu.add(fileExit); return fileMenu; } //自定义方法:打开保存文件对话框,保存缓冲区数据为 jpg 图像文件 private void saveJPG(BufferedImage buffImage){ JFileChooser filechooser=new JFileChooser("./"); //文件选择器:当前目录 int result=filechooser.showSaveDialog(this); //显示保存文件选择对话框 if(result==filechooser.APPROVE_OPTION){ //点击对话框的"保存"按钮 File file=filechooser.getSelectedFile(); //得到保存文件对象 try { FileOutputStream out=new FileOutputStream(file); //创建字节输出流 //将字节输出流 out 接上 JPG 编码器对象 encoder JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out); encoder.encode(buffImage); //图像数据编码并输出到文件 file 保存 out.close(); //关闭流 } catch(IOException ee) { ee.printStackTrace(); } } else if(result==filechooser.CANCEL_OPTION){ //点击对话框的"撤消"按钮 JOptionPane.showMessageDialog(null, "图片没有保存", "提示信息",JOptionPane.PLAIN_MESSAGE ); } }
public static void main(String]args) new Test4(); import iava awt * import java.awt.event.*; import javax age bufferedimage:∥程序中用到缓冲区画图 import java.util.ArrayList:使用ArrayList保存鼠标拖动路径上的所有点 public class DrawPanel extends JPane implements MouseMotionListener int width=400,height=400 DRAW-1.CLEAR-2. ArrayList array=new ArrayList(:)/∥保存鼠标移动路径上的点坐标 Bufferedl nage bufflmage,∥图像线 中区 Graphics2Dgg∥图像缓冲区画笔 public DrawPanel(构造方法 Color..white)/设置面板背景色为白色 ∥创建图像缓冲区,大小为480、400 bufflmage new BufferedImage(width,height e.I gg fillRect(O,0,widh,height,)/画缓冲区的白色背景 (his,∥对面板增加鼠标监听 /把鼠标拖动路径上的点先画在缓冲区中,再把缓冲区画在在面板中 Graphics g) Graphics.2Dg2d-(Graphics2D)g,/把父类对象强制转化为子类对象 if(state-=DRAW){/state值为I,表示画图 个0缓区百笔的宽度 for(inti0 iarray..sizc0-l:i)循环ary的所有点 下一个占 邻两占间的 CLEAR){/sae值为2 除面截 上的国 ound()) 背景颜色whit 把缓冲区中的画图显示在面板上 g2d.drawlmage(bufflmage.0.0.width.height.,this). 5
5 public static void main(String[] args){ new Test4(); } } ////////////////////////////////////////////// DrawPanel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.image.BufferedImage; //程序中用到缓冲区画图 import java.util.ArrayList; //使用 ArrayList 保存鼠标拖动路径上的所有点 public class DrawPanel extends JPanel implements MouseMotionListener { int width=400,height=400; static final int DRAW=1,CLEAR=2; int state=0; ArrayList array=new ArrayList();//保存鼠标移动路径上的点坐标 BufferedImage buffImage;//图像缓冲区 Graphics2D gg;//图像缓冲区画笔 public DrawPanel() {//构造方法 setBackground(Color.white);//设置面板背景色为白色 //创建图像缓冲区,大小为 480、400 buffImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB ); gg = buffImage.createGraphics();//创建缓冲区画笔 gg.setColor(Color.white); //设置缓冲区画笔颜色 gg.fillRect(0,0,width,height); //画缓冲区的白色背景 addMouseMotionListener(this); //对面板增加鼠标监听 } //把鼠标拖动路径上的点先画在缓冲区中,再把缓冲区画在在面板中 public void paint( Graphics g ) { super.paint(g); gg.setColor(Color.red); Graphics2D g2d=(Graphics2D)g;//把父类对象强制转化为子类对象 if(state==DRAW){//state 值为 1,表示画图 gg.setStroke(new BasicStroke(3.0f));//设置缓冲区画笔的宽度 Point p1,p2;//声明两个点类对象 for(int i=0;i<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);//画相邻两点间的线 } } else if(state==CLEAR){//state 值为 2,表示清除面板上的画图 gg.setColor(getBackground()); //设置缓冲区画笔为当前背景颜色 white gg.fillRect(0,0,width,height); //画缓冲区为背景颜色---清除画图 } //把缓冲区中的画图显示在面板上 g2d.drawImage(buffImage,0,0,width,height,this); }
public Dimension getPreferredSize() return new Dimension(width,height,)/面板显示大小为450×400像素 /鼠标移动时:清空aray中所有元素,为下一次拖动初始化arT public void me seMoved(MouseEvent e) ∥设置鼠标移动时,鼠标光标形状为:手形 清器中所OD.CURSOR) ∥鼠标拖动时,得到拖动路径上的所有点 publi Mouvnt) /设置鼠标拖动时,鼠标光标形状为 :十字形 CROSSHAIR CURSOR) arry.add(e.geto,)得到鼠标拖动路径上的点,并保存在arry中 repaint(),∥重画,刷新面板中的显示
6 public Dimension getPreferredSize() { return new Dimension(width, height);//面板显示大小为 450×400 像素 } //鼠标移动时:清空 array 中所有元素,为下一次拖动初始化 array public void mouseMoved( MouseEvent e ){ //设置鼠标移动时,鼠标光标形状为:手形 setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); array.clear(); //清空 array 中所有元素 } //鼠标拖动时,得到拖动路径上的所有点 public void mouseDragged( MouseEvent e ) { state=DRAW; //设置鼠标拖动时,鼠标光标形状为:十字形 setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); array.add(e.getPoint()); //得到鼠标拖动路径上的点,并保存在 array 中 repaint(); //重画,刷新面板中的显示 } }