结对人员:201303011126 刘紫璇;201303011142 李阳光
一、问题简介
编写一个简单的记事本程序,
要求用图形用户界面实现。能够实现新建、打开、保存、退出、编辑时间和日期、格式、帮助、关于功能。
二、代码链接;
https://github.com/wang0202zhu/test/blob/master/MyNotepad.java
https://github.com/wang0202zhu/test/blob/master/MyNotepad1.java
三、程序的测试以及截图
我的主要任务就是实现文件栏下的新建、打开、保存、退出;和编辑的日期和时间
而队友主要实现界面的控件,编辑下的自动换行,以及记事本的关于下的信息,以及代码的调试和测试
实现文件下的新建编辑
Notepad类:主程序。实现各种监听。
public static void main(String[] args)
{
new MyNotepad();
}
JTextArea类:主要的文本编辑区类,同时集成上面的menu类,基本构成该软件的主要界面和功能的封装。把menu的监听函数
需要用的函数封装了一下。具体请看代码,不能单独运行出现界面:
JTextArea jta = new JTextArea(15,15);
JScrollPane jsp = new JScrollPane(jta);
MenuBar类:主要是工具条的元件组合,监听在notepad类内实现。可单独运行查看效果:
层次结构图
对于文件下的新建、打开。保存、退出
编辑控件下的时间和日期:
public void actionPerformed(ActionEvent e)
{
//新建
if(e.getSource()==jmi1)
{
jta.setText("");
this.setTitle("New MyNoetpad");
}
//打开
if(e.getSource()==jmi2)
{
File f1;
JFileChooser jfc1 = new JFileChooser();
int num1 = jfc1.showOpenDialog(this);
if(num1==JFileChooser.APPROVE_OPTION)
{
try{
f1 = jfc1.getSelectedFile();
this.setTitle(f1.getName());
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);
String str;
while((str = br.readLine())!=null)
{
jta.setText(str);
}
fr.close();
br.close();
}
catch(FileNotFoundException e1){
e1.printStackTrace();
}catch(IOException e2)
{ e2.printStackTrace();}
}
}
//保存
if(e.getSource()==jmi3)
{
File f2 = null;
JFileChooser jfc2 = new JFileChooser();
int num2 = jfc2.showSaveDialog(this);
if(num2==JFileChooser.APPROVE_OPTION)
{
f2=jfc2.getSelectedFile();
this.setTitle(f2.getName());
try{
FileWriter fw = new FileWriter(f2);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(jta.getText());
bw.close();
fw.close();
}catch(IOException e2)
{e2.printStackTrace(); }
}
}
//退出
if(e.getSource()==jmi4)
{
int a = JOptionPane.showConfirmDialog(this,"文件已被改变,是否要保存?","提示",JOptionPane.YES_NO_CANCEL_OPTION);
if(a==1)
{
this.dispose();
}
else if(a==0)
{
File f2 = null;
JFileChooser jfc2 = new JFileChooser();
int num2 = jfc2.showSaveDialog(this);
if(num2==JFileChooser.APPROVE_OPTION)
{
f2=jfc2.getSelectedFile();
this.setTitle(f2.getName());
try{
FileWriter fw = new FileWriter(f2);
BufferedWriter bw = new BufferedWriter(fw);
b w.write(jta.getText());
bw.close();
fw.close();
}catch(IOException e2){ e2.printStackTrace(); }
this.dispose();
}
}
}
//日期
if(e.getSource()==jmi5)
{
Calendar c1 =Calendar.getInstance();
int y = c1.get(Calendar.YEAR);
int m = c1.get(Calendar.MONTH);
int d = c1.get(Calendar.DATE);
int h = c1.get(Calendar.HOUR);
int m1 = c1.get(Calendar.MINUTE);
int m2 = m+1;
jta.setText(y+"年"+m2+"月"+d+"日"+h+":"+m1);
}
//关于作者
测试(由于上一次实验已经 做过测试代码的编写实验,在这里我就不在写测试代码)
我所负责的功能实现 运行结果截图:
总的记事本截图为
四、实验心得与体会
本次实验是和同学一起做的,在以前都是一个人,通过这一次的合作,我发现与同学合作也是非常省力和愉快的事情,熟话说人多力量大,虽然我们就两个人 但相对于一个人的力量来说 还是不可同时而语,在这一次实验中我们也遇到了一些问题,比如说一些符号的设置,页面控件的设定。然而这些问题我们俩都没能解决,还是通过向我们把的大学霸咨询,网上查阅资料才得以完成,听学霸说我们这就是一个小问题,不涉及整个程序的运行。还好我们最终解决了他,完成了整个程序的运行。结对项目,考验的不仅仅是个人的能力,更考验的是两个人的协作能力以及配合,个人永远只是个体,要想完成最终的目标,就要学会团队合作!