设计一个JAVA程序模仿记事本(NotePad)的部分功能
已实现功能:
1.简易笔记本,加入了io流操作
2.实现功能:新建、打开、保存、另存、退出、复制、粘贴、关于
3.功能都有小窗口提示
4.复制能复制在windows的粘贴板中
5.程序左上角文件名会更新
自我反省为未实现功能:
1.没写ctrl+c是复制的功能、ctrl+v是粘贴
2.窗口size大小变化时,滑动窗口不改变
实现思路:
1.添加键盘事件,写判断
2.使用窗口事件
代码仅供参考:
/**
* 简易笔记本,加入了io流操作
* 实现功能:新建、打开、保存、另存、退出、复制、粘贴、关于
* 复制能复制在windows的粘贴板中
* 程序左上角文件名会更新
*/
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Notebook extends JFrame implements ActionListener{
JMenuBar jmb;//菜单栏
JMenu mFile,mEdit,mHelp;//菜单
JMenuItem mNew,mOpen,mSave,mSaveAs,mExit,mCopy,mPaste,mAbout;//菜单项
JTextArea jta;//文本框
JScrollPane jsp;//滚动窗格
JFileChooser jfc;//
File f;//保存文件目录是否改变
String s=new String("");//记录用于打开文件与最后操作的文件是否一样
public static void main(String[] args) {
// TODO Auto-generated method stub
new Notebook();
}
Notebook()
{
//菜单栏
jmb=new JMenuBar();
//菜单
mFile=new JMenu("文件");
mEdit=new JMenu("编辑");
mHelp=new JMenu("帮助");
jmb.add(mFile);
jmb.add(mEdit);
jmb.add(mHelp);
//菜单项
mNew=new JMenuItem("新建");
mOpen=new JMenuItem("打开");
mSave=new JMenuItem("保存");
mSaveAs=new JMenuItem("另存");
mExit=new JMenuItem("退出");
mCopy=new JMenuItem("复制");
mPaste=new JMenuItem("粘贴");
mAbout=new JMenuItem("关于");
//加入组件
mFile.add(mNew);
mFile.add(mOpen);
mFile.add(mSave);
mFile.add(mSaveAs);
mFile.add(mExit);
mEdit.add(mCopy);
mEdit.add(mPaste);
mHelp.add(mAbout);
//加入事件
mNew.addActionListener(this);
mOpen.addActionListener(this);
mSave.addActionListener(this);
mSaveAs.addActionListener(this);
mExit.addActionListener(this);
mCopy.addActionListener(this);
mPaste.addActionListener(this);
mAbout.addActionListener(this);
//文本框
JPanel jp=new JPanel();
jta=new JTextArea(17,44);
jta.setFont(new Font("黑体",Font.PLAIN,25));//黑体,普通字体,大小
JScrollPane jsp=new JScrollPane(jta);//新建一个滚动条界面,将文本框传入
jp.add(jsp);//注意:将滚动条界面添加到组建中。而不是添加文本框了
//加入JFrame
this.setJMenuBar(jmb);
this.add(jp);
//属性
this.setTitle("简易记事本");
this.setVisible(true);
this.setSize(600,600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
int n=0;
if(e.getSource()==mNew)//新建按钮
{
if(!s.equals(jta.getText()))//对比文本内容是否改变
{
n=JOptionPane.showConfirmDialog(this,"文件还未保存,确认是否保存","确认对话框",JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
{save();}
else{
jta.setText("");
}
}
else
{
this.setTitle("简易记事本");
jta.setText("");
}
}
if(e.getSource().equals(mOpen))//打开按钮
{
if(s.equals(jta.getText()))//对比文本内容是否改变
open();
else
{
n=JOptionPane.showConfirmDialog(this,"是否保存文件","确认对话框",JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
{save();}
open();
}
}
if(e.getSource().equals(mSave))//保存按钮
{
save();
}
if(e.getSource().equals(mSaveAs))//另存按钮
{
//判断另存的时候是否点了取消
jfc=new JFileChooser();
int result=jfc.showSaveDialog(null);
if(result==jfc.CANCEL_OPTION)//判断是否点了取消按钮
{}
else{
f= jfc.getSelectedFile();//文件保存目录
}
save();
}
if(e.getSource().equals(mCopy))//辅助
{
jta.copy();
}
if(e.getSource().equals(mPaste))
{
jta.paste();
}
if(e.getSource().equals(mExit))//退出按钮
{
//判断内容是否为空
if(jta.getText()=="")
System.exit(0);
else
{
n=JOptionPane.showConfirmDialog(this,"是否保存文件","确认对话框",JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
{save();}
else
System.exit(0);
}
}
if(e.getSource().equals(mAbout))
{
JOptionPane.showMessageDialog(this,"“长不大的少年”的记事本","版权",JOptionPane.INFORMATION_MESSAGE );
}
}
void save()//保存
{
try{
if(f==null)//新建按钮
{
jfc=new JFileChooser();
int result=jfc.showSaveDialog(null);
if(result==jfc.CANCEL_OPTION)//判断是否点了取消按钮
{}
else{
f= jfc.getSelectedFile();//文件保存目录
//System.out.println("save: "+f.getAbsolutePath());
FileWriter fw = new FileWriter(f.getAbsolutePath()+".txt");
String f1=jta.getText();
fw.write(f1);
fw.close();
this.setTitle(f.getName()+"-简易记事本");
}
}
else//保存按钮
{
FileWriter fw = new FileWriter(f.getAbsolutePath());
String f1=jta.getText();
fw.write(f1);
fw.close();
s=jta.getText();
}
}catch(Exception e1){}
}
void open()//打开
{
StringBuffer sb = new StringBuffer();
try {
jfc=new JFileChooser();
int result=jfc.showOpenDialog(null);
if(result==jfc.CANCEL_OPTION)//判断是否点了取消按钮
{}
else{
f=jfc.getSelectedFile();
this.setTitle(f.getName()+"-简易记事本");
InputStreamReader read = new InputStreamReader(new FileInputStream(f),"GBK");
BufferedReader br = new BufferedReader(read);//构造一个BufferedReader类来读取文件
while((s = br.readLine())!=null){
//使用readLine方法,一次读一行
sb.append(s+"\n"/*System.lineSeparator()*/);
}
//消去最后一行的空行
sb.replace(sb.length()-1, sb.length(), "");
jta.setText(sb.toString());
s=sb.toString();
}
}catch(Exception e1){}
}
}
实现图片
- 😃联系交流QQ:2283093518