📄 note.java
字号:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.color.*;
public class Note extends JFrame
{
MyFontChooser fontChooser;
boolean isChange=false;
boolean wasChange=false;
JMenuBar menuBar=new JMenuBar(); //菜单栏的实现将 JMenu 对象添加到菜单栏以构造菜单
JMenu menuFile=new JMenu("文件"); //创建菜单项及菜单子项
JMenuItem menuFileOpen=new JMenuItem("打开"); //菜单中项的实现
JMenuItem menuFileSave=new JMenuItem("保存");
JMenuItem menuFileExit=new JMenuItem("关闭");
JMenu menuEdit=new JMenu("编辑"); //创建菜单项及菜单子项
JMenuItem menuEditCut=new JMenuItem("剪切");
JMenuItem menuEditPaste=new JMenuItem("粘贴");
JMenuItem menuEditFont=new JMenuItem("字体");
JMenuItem font=new JMenuItem("字体颜色");
JMenuItem back=new JMenuItem("背景颜色");
JTextArea fileArea=new JTextArea(); //定义一个显示纯文本的多行区域。
public static void main(String arg[]) //主函数入口
{
Note nt=new Note();
nt.show();
}
public Note()
{
super("记事本");
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); //取消关闭窗口的默认操作
addWindowListener(new WindowAdapter() //调用exit响应关闭按钮
{
public void windowClosing(WindowEvent e)
{
exit();
}
});
menuFileOpen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
fileOpen_actionPerformed(e);
}
});
menuFileSave.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
fileSave_actionPerformed(e);
}
});
menuFileExit.addActionListener(new ActionListener() //调用exit响应退出按钮
{
public void actionPerformed(ActionEvent e)
{
exit();
}
});
menuEditCut.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
editCut_actionPerformed(e);
}
});
menuEditPaste.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
editPaste_actionPerformed(e);
}
});
menuEditFont.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
editFont_actionPerformed(e);
}
});
font.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
fontColor_actionPerformed(e);
}
});
back.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
backColor_actionPerformed(e);
}
});
fileArea.getDocument().addDocumentListener(new DocumentListener() //接收文本文档的更改通知
{
public void insertUpdate(DocumentEvent e) //给出对文档执行了插入操作的通知
{
wasChange=isChange;
isChange=true;
}
public void removeUpdate(DocumentEvent e) //给出移除了一部分文档的通知
{
wasChange=isChange;
isChange=true;
}
public void changedUpdate(DocumentEvent e) //给出属性或属性集发生了更改的通知
{
wasChange=isChange;
isChange=true;
}
});
setSize(500,450); //设置窗体大小
menuBar.add(menuFile);
menuBar.add(menuEdit);
menuFile.add(menuFileOpen);
//返回一个 KeyStroke,它表示生成给定 KeyEvent 的快捷键事件。
menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));//快捷健;
menuFile.add(menuFileSave);
menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
menuFile.addSeparator(); //加入分隔符
menuFile.add(menuFileExit);
menuFileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
menuEdit.add(menuEditCut);
menuEditCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
menuEdit.add(menuEditPaste);
menuEditPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
menuEdit.add(menuEditFont);
menuEditFont.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
menuEdit.addSeparator(); //加入分隔符
menuEdit.add(font);
font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
menuEdit.add(back);
back.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK));
//以文本域为对象创建滚动条面板类的匿名实例,并将其加到框架的内容面板上
this.getContentPane().add(new JScrollPane(fileArea));
setJMenuBar(menuBar); //加载菜单栏
}
public void fileOpen_actionPerformed(ActionEvent e)
{
JFileChooser fileOpen=new JFileChooser(); //选择文件
fileOpen.addChoosableFileFilter(fileOpen.getFileFilter());
if(fileOpen.APPROVE_OPTION!=fileOpen.showOpenDialog(this))return;
//以下是文件读
try
{ //从字符输入流中读取文本,缓冲各个字符
BufferedReader dataIn=new BufferedReader(new FileReader(fileOpen.getSelectedFile()));
String c=null;
do
{
c=dataIn.readLine();
if(c!=null)
fileArea.append(c+"\n"); //在文本区域显示文件内容
}
while(c!=null);
}
catch(Exception ex) //捕捉异常
{
System.out.println("Catch exception:"+ex.toString()); //返回描述当前异常对象信息的字符串
}
}
public void exit() //具体关闭窗口操作响应
{
if(isChange==false)
System.exit(1);
else
{ //弹出标准对话框,询问一个确认问题
int decision=JOptionPane.showConfirmDialog(this,"文件被改动\n"+"是否保存改动?",
"警告",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
if (decision == JOptionPane.YES_OPTION) //选保存则将文件写入计算机!
{
try {
JFileChooser fileSave = new JFileChooser();
fileSave.addChoosableFileFilter(fileSave.getFileFilter());
if (fileSave.APPROVE_OPTION != fileSave.showSaveDialog(this))
return;
BufferedWriter dataOut =new BufferedWriter(new FileWriter(fileSave.getSelectedFile()+".txt"));
String c = null;
do {
String str = fileArea.getText();
dataOut.write(str);
dataOut.close();
}
while (c != null);
}
catch (Exception e2)
{
System.out.println("Catch exception:有错误!" + e2.toString());
}
System.exit(1);
}
else if (decision == JOptionPane.NO_OPTION) // 选否关闭窗口
System.exit(1);
else if (decision == JOptionPane.CANCEL_OPTION); //选取消返回
;
}
}
public void fileSave_actionPerformed(ActionEvent e1)
{ //以下是将文件存入计算机!
try
{
JFileChooser fileSave=new JFileChooser();
fileSave.setDialogTitle("保存文件" );
fileSave.addChoosableFileFilter(fileSave.getFileFilter());
if(fileSave.APPROVE_OPTION!=fileSave.showSaveDialog(this))return;
//默认为.txt扩展名保存
BufferedWriter dataOut=new BufferedWriter(new BufferedWriter(new FileWriter(fileSave.getSelectedFile()+".txt")));
String c=null;
do
{
String str=fileArea.getText();
dataOut.write(str);
dataOut.close();
}
while(c!=null);
}
catch(Exception e2)
{
System.out.println("Catch exception:有错误!"+e2.toString());
}
}
public void editCut_actionPerformed(ActionEvent e) //剪切
{
fileArea.cut();
}
public void editPaste_actionPerformed(ActionEvent e) //粘贴
{
fileArea.paste();
}
public void editFont_actionPerformed(ActionEvent e) //字体
{
fontChooser=new MyFontChooser(this,fileArea.getFont());
fontChooser.setLocation(400,30);//窗体显示的坐标
fontChooser.setChoose(fileArea.getFont());
fontChooser.setVisible(true);
Font newFont=fontChooser.getChoose();
if(newFont!=null)fileArea.setFont(newFont);
}
public void fontColor_actionPerformed(ActionEvent e) //设置字体的颜色
{
JColorChooser fontColor=new JColorChooser();
fileArea.setForeground(fontColor.showDialog(this,"字体颜色",Color.black));
}
public void backColor_actionPerformed(ActionEvent e) //设置背景的颜色
{
JColorChooser backColor=new JColorChooser();
fileArea.setBackground(backColor.showDialog(this,"背景颜色",Color.black));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -