1. 编写一个Java应用程序,给当前的类所在的文件ReadExample.java添加行号拷贝到另一个文件temp.text。 import java.io.*; public class ReadExample { public static void main(String[] args) throws IOException { File file = new File(【代码1】);//添加当前文件路径 File tempFile = new File(\目标文件 FileReader inOne =【代码2】//创建指向file的输入流 BufferedReader inTwo = 【代码3】//创建指向inOne的输入流 FileWriter toFile = 【代码4】;//创建指向文件tempFile的输出流 BufferedWriter out = 【代码5】;//创建指向toFile的输出流 String s = null; int i =0; s = 【代码6】 //从源文件中读一行 while(s!=null){ i++; out.write(i+\ 【代码7】 //换行 s = 【代码8】 //从源文件中读一行 } inOne.close(); inTwo.close(); out.flush(); out.close(); toFile.close(); } } 思考与练习 1.怎样使用输入、输出流克隆对象?
实 验 教 案
课题(项目)名称:窗口布局 计划学时: 6 实验类型: 1.验证性或基础性□ 2.综合性□ 3.设计性□ 4.创新性和研究型□ 授课日期: 年 月 日 第 周 星期 第 节 实验目的 (l) 进一步了解和运用常用的 GUI 组件 ; (2) 深入了解和运用 5 种常用的布局管理 :FlowLayout、BorderLayout、 CardLayout、 GridLayout 和 GridBagLayout, 掌握 5 种布局管理的特点 , 并掌握一些常用组件容器的默认布局管理方式 : (3) 比较常用的布局管理方式的不同和使用的条件。 实验要求 本实验的目的是让学生掌握窗口布局应用。编写一个实现窗体布局的实例程序,编译运行结果。 实验内容与步骤 1.名片录入管理界面设计 设计一个简单的通用名片录入界面 , 名片的信息包括姓名、称谓、工作单位、工作地址、电话 1 、电话 2 、手机、传真、邮编等基本内容。 实验步骤 : 打开 Eclipse, 打开一个项目如 Chapter3, 在该项目下完成如下练习。 练习 设计顺序排列的名片录入管理界面,本练习是考察用户对 FlowLayout 布局管理器的应用。 要求 : 在当前项目如 Chapter3下, 新建一个文件CardManager.java,将程序清单3-3中的程序输入并保存。通过一个CardManager.java文件 , 实现一个简单的通用名片录入界面 , 名片的信息包括姓名、称谓 ( 可以包括总裁、总经理、经理、主任、处长、 院长、校长、科长、教授、博士等 ) 、工作单位、工作地址、电话 1 、电话 2 、手机、传真、邮编等基本内容 , 用户选择确定按钮 , 表示输入 , 如果选择取消按钮 , 表示关闭窗口。运行结果可以如图5所示。观察运行结果 , 阅读和分析程序 CardManager.java,请将程序中代码1~代码7处补充完整。 图5 程序清单3-3 CardManager.java import javax.swing.*; import java.awt.*;
import java.awt.event.*; public class CardManager extends JFrame{ JLabel nameLabel,sexLabel,titleLabel,unitLabel; JLabel addressLabel,telLabel1,telLabel2,mobileLabel,faxLabel,emailLabel; JTextField nameTxt,unitTxt,addressTxt; JTextField telTxt1,telTxt2,mobileTxt,faxTxt,emailTxt; JRadioButton sexBtn1,sexBtn2; JComboBox titleBx; JButton okBtn,cancelBtn; public CardManager() { super(\名片录入管理\Container c=getContentPane(); JPanel centerPanel=new JPanel();//输入面板 nameLabel=new JLabel(\姓名\定义姓名标签 nameTxt=new JTextField(10);//定义姓名文本输入框 centerPanel.add(nameLabel); centerPanel.add(nameTxt); sexLabel=new JLabel(\性别\定义性别标签 sexBtn1=new JRadioButton (\男\定义性别单选按钮1 sexBtn2= new JRadioButton (\女\定义性别单选按钮2 ButtonGroup group=new ButtonGroup(); group.add(sexBtn1); group.add(sexBtn2); centerPanel.add(sexLabel); centerPanel.add(sexBtn1); centerPanel.add(sexBtn2); titleLabel=new JLabel(\称谓\定义称谓标签 String title[]={\总裁\总经理\经理\主任\处长\院长\校长\科长\教授\讲师\定义称谓内容 titleBx=new JComboBox();//创建称谓文本输入框 titleBx.setMaximumRowCount(5); centerPanel.add(titleLabel); centerPanel.add(titleBx); unitLabel=new JLabel(\工作单位\定义工作单位标签 unitTxt=new JTextField(30);//定义工作单位输入框 centerPanel.add(unitLabel); centerPanel.add(unitTxt); addressLabel=new JLabel(\工作地址\定义工作地址标签 addressTxt=new JTextField(30); //定义工作地址输入框 centerPanel.add(addressLabel); centerPanel.add(addressTxt); telLabel1=new JLabel(\电话\定义电话1标签 telTxt1=new JTextField(15);//定义电话1输入框 centerPanel.add(telLabel1);
centerPanel.add(telTxt1); telLabel2=new JLabel(\电话\定义电话2标签 telTxt2=new JTextField(15); //定义电话2输入框 centerPanel.add(telLabel2); centerPanel.add(telTxt2); mobileLabel=new JLabel(\手机\定义手机标签 mobileTxt=new JTextField(15); //定义手机输入框 centerPanel.add(mobileLabel); centerPanel.add(mobileTxt); faxLabel=new JLabel(\传真\定义传真标签 faxTxt=new JTextField(15);//定义传真输入框 centerPanel.add(faxLabel); centerPanel.add(faxTxt); emailLabel=new JLabel(\定义email标签 emailTxt=new JTextField(32);//定义email输入框 centerPanel.add(emailLabel); centerPanel.add(emailTxt); JPanel sPanel=new JPanel();//按钮面板 okBtn=new JButton(\确定\定义确定按钮 cancelBtn=new JButton(\取消\定义取消按钮 cancelBtn.addActionListener(new ActionListener(){//监视cancelBtn的动作 public void actionPerformed(ActionEvent e){ if(e.getSource()==cancelBtn){//判断事件源是否是cancelBtn; System.exit(0); } } }); sPanel.add(okBtn); sPanel.add(cancelBtn); c.setLayout(new BorderLayout()); c.add(centerPanel, BorderLayout.CENTER);//将centerPanel放置c中的中间位置; c.add(sPanel, BorderLayout.SOUTH);//将sPanel 放置c中的南面的位置; setSize(418,250); setVisible(true); } public static void main(String args[]){ CardManager cm=new CardManager(); cm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 思考与练习 (1)观察程序 CardManager() 方法中的程序段 : ButtonGroup group=newButtonGroup(); group.add(sexBtnl);
group.add(sexBtn2); 组件对象 group 的作用是什么 ? 如果将 group 去掉 , 程序的运行结果会发生什么变化? 为什么 ? group 的作用是定义单选按钮控件组。如果将 group 去掉,添加的两个性别选择按钮可以同时选定,因为此时是向JFrame类中分别添加两个单选按钮,它们之间没有影响。 (2) 观察运行结果 , 如果将窗口的大小改变 , 运行结果会发生什么变化? 为什么? 窗口的大小改变时,组件的位置会变化,但组件的大小不改变。因为布局管理器为BorderLayout()。