1、点击“按钮1”,则向文本区中追加一行字符串“java程序设计”,图(b)是点击该按钮3次后的显示结果; 点击“按钮2”,则弹出颜色选择对话框,并将选择的颜色设置为文本区中文字的颜色;点击“按钮3”,则弹出颜色选择对话框,并将选择的颜色设置为文本区的背景颜色。 (a) (b)4、请按照下面的描述编写以下两个java程序:Test4.java 和DrawPanel.java。DrawPanel是继承自面板JPanel的面板子类,面板背景颜色设置为白色,大小为400400像素,该类实现了鼠标移动监听接口,响应鼠标移动和拖动事件,拖动鼠标时,把鼠标指针形状设置为十字形状,并通过面板的paint方法在面
2、板中沿拖动路径画图(画笔的宽度设置为3.0f),为了能够将所画图形保存为jpg图片文件,首先把鼠标拖动所绘制的图形画在图像缓冲区(BufferedImage)中,然后将缓冲区的内容显示在面板中。Test4类继承自JFrame,窗口大小为400400像素,窗口标题为“第4题”,窗口内容面板的布局为边框布局(BorderLayout),中间放置绘图面板类DrawPanel的对象,Test4类中设置了菜单条,并在菜单条上添加一个菜单“File”,该菜单下有3个菜单项:“New”、“Save”和“Exit”,下图(a)所示,并按图示设置他们的快捷键。各个菜单项的事件响应按下面的描述实现:选择菜单项“N
3、ew”,则把中间面板对象的背景色设置为白色,清除所画图形;选择菜单项“Save”,则弹出文件保存对话框(JFileChooser),把中间面板中所画图形保存为jpg文件,下图(b)所示;选择菜单项“Exit”,则退出程序的运行。Java程序设计课程 期末机考卷A参考答案(200x200x学年 第x学期)_专业_年级 本 专科 A卷 B卷 C卷1(25分)参考程序:import java.awt.*;import javax.swing.*;import java.util.*;public class Test1 extends JFrame JTextArea text; public Te
4、st1(String s) super(s); Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout( ); text=new JTextArea(10,20); / String str=new String5; String s1=排序前:n; for(int i=0;istr.length;i+) stri=JOptionPane.showInputDialog(请输入字符串); s1+=stri+t text.setText(s1); Arrays.sort(str); Stri
5、ng s2=n排序后: s2+=stri+ 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 public static void main(String args)throws IOException File file1=new File(
6、d:xxxyyyzzz 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=ach=zch+) out.write(ch); out.close(); / FileInputStream readfile=new FileInputStream(file2); int b
7、1; while(b1=readfile.read()!=-1) System.out.print(char)b1); readfile.close();3、(25分)参考程序:import java.awt.event.*;public class Test3 extends JFrame /文本区 JButton btn=new JButton3; public Test3(String str) super(str); contentPane.setLayout(new BorderLayout(); text=new JTextArea(20,20); text.setFont(new
8、 Font(楷体_gb2312,Font.PLAIN,30);/将文本区添加到窗口中间 JPanel panel=new JPanel();/创建缺省布局方式(FlowLayout)的面板btn.length;i+)/初始化5个按钮并添加到面板中 btni=new JButton(按钮+(i+1);/循环创建5个按钮 panel.add(btni);/将按钮添加到面板中 / btn0.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) text.append(java程序设计n );
9、 btn1.addActionListener(new ActionListener() Color cr=JColorChooser.showDialog(null,调色板,Color.red); text.setForeground(cr); btn2.addActionListener(new ActionListener() text.setBackground(cr); contentPane.add(panel,BorderLayout.NORTH);/将面板添加到窗口北边 setSize(400,300); public static void main(String args)
10、 new Test3(第3题4、(25分)参考程序: 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(); drawPanel
11、=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 J
12、Menu(File /菜单 fileMenu.setMnemonic(KeyEvent.VK_F); /设置快捷键:ALT+F /菜单项 New JMenuItem fileNew= new JMenuItem( /菜单项 fileNew.setMnemonic(KeyEvent.VK_N); fileNew.addActionListener(new ActionListener()/菜单项事件处理 public void actionPerformed(ActionEvent e) /设置文本区字体大小 drawPanel.state=DrawPanel.CLEAR; drawPanel.
13、repaint(); fileMenu.add(fileNew);Save JMenuItem fileSave= new JMenuItem( fileSave.setMnemonic(KeyEvent.VK_S); fileSave.addActionListener(new ActionListener()/菜单项事件处理 saveJPG(drawPanel.buffImage); fileMenu.add(fileSave);Exit JMenuItem fileExit= new JMenuItem( fileExit.setMnemonic(KeyEvent.VK_X); file
14、Exit.addActionListener(new ActionListener()/菜单项事件处理 System.exit(0); fileMenu.add(fileExit); return fileMenu; /自定义方法:打开保存文件对话框,保存缓冲区数据为jpg图像文件 private void saveJPG(BufferedImage buffImage) JFileChooser filechooser=new JFileChooser(./ /文件选择器:当前目录 int result=filechooser.showSaveDialog(this); /显示保存文件选择对
15、话框 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保存
16、/关闭流 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(); /DrawPanel.javaimport java.awt.image.BufferedImage; /程序中用到缓冲区画图import j
17、ava.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 DrawPa
18、nel() /构造方法 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); /对面板
19、增加鼠标监听 /把鼠标拖动路径上的点先画在缓冲区中,再把缓冲区画在在面板中 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;/声明两个点类对象 array.size()-1;i+) /循环array的所有点 p1=(Point)array
20、.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 /画缓冲区为背景颜色-清除画图 /把缓冲区中的画图显示在面板上 g2d.drawImage(buffImage,0,0,width,height,this); public Dimension getPreferredSiz
21、e() return new Dimension(width, height);/面板显示大小为450400像素 /鼠标移动时:清空array中所有元素,为下一次拖动初始化array public void mouseMoved( MouseEvent e ) /设置鼠标移动时,鼠标光标形状为:手形 setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); array.clear(); /清空array中所有元素 /鼠标拖动时,得到拖动路径上的所有点 public void mouseDragged( MouseEvent e ) state=DRAW; /设置鼠标拖动时,鼠标光标形状为:十字形 setCu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1