java 记事本及其简单功能的实现其中包括保存、新建、等功能的实现。
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
import java.io.*;
import javax.swing.undo.*;
import javafx.scene.input.InputEvent;
import javafx.scene.input.KeyEvent;
import javax.swing.border.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.event.*;
import java.awt.datatransfer.*;
import java.time.*;
public class Mynote extends JFrame implements ActionListener,DocumentListener{
JMenuBar bar;
JMenu cai1,cai2,cai3,cai4,cai5,cai41;
JMenuItem cai11,cai12,cai13,cai14,cai15,cai16,cai17,cai18,cai21,cai22,cai23,cai24,cai25,cai26,cai27,cai28,cai29,cai210,cai211,cai212,cai213,cai32,cai33,cai34,cai42,cai41_1,cai41_2,cai41_3,cai51,cai52,cai53,editMenu_Undo;
JTextArea text;
JPanel pa;
JScrollPane jsc;
FileReader fr;
BufferedReader br;
FileWriter fw,fw1;
BufferedWriter bw,bw1,out;
String str=null,oldValue;
File dir,currentFile,bcwjm;//currentFile当前文件名
JFileChooser jfc2;
JLabel label;
JCheckBoxMenuItem cai31;
//右键菜单项
JPopupMenu youcd;
JMenuItem cx,jq,fz,zt,sc,qx;
//系统剪切板
Toolkit toolkit=Toolkit.getDefaultToolkit();
Clipboard clipBoard=toolkit.getSystemClipboard();
//设置图标
ImageIcon image;
//撤销操作
protected UndoManager undo=new UndoManager();
protected UndoableEditListener undoHandler=new UndoHandler();
//判断是否是新文件
boolean isNewFile=true;
int a=0,b=0;
public Mynote() {
initGUI();
this.setBounds(500,300,600,400);
this.setVisible(true);
setDefaultCloseOperation(3);
this.setTitle("霖霖的记事本");
//改字体
Font ft = new Font("华文楷体",Font.PLAIN,14);
java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof javax.swing.plaf.FontUIResource) {
UIManager.put(key, ft);
}
}
//撤销
label = new JLabel("按F1查看帮助");
this.add(label,BorderLayout.SOUTH);
//添加左上角图片
image = new ImageIcon("my.jfif");
this.setIconImage(image.getImage());
//添加窗口侦听器
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
exitWindowChoose();
}
});
checkMenuItemEnabled();
text.requestFocus();
}
public void initGUI(){
bar = new JMenuBar();
cai1 = new JMenu("文件(F)");
cai1.setMnemonic('F');//设置快捷键ALT+F
cai2 = new JMenu("编辑(N)");
cai2.setMnemonic('N');
cai3 = new JMenu("格式(O)");
cai3.setMnemonic('O');
cai4 = new JMenu("查看(V)");
cai4.setMnemonic('V');
cai5 = new JMenu("帮助(H)");
cai5.setMnemonic('H');
cai11 = new JMenuItem("新建(N)");
cai11.setAccelerator(KeyStroke.getKeyStroke(78,2));
cai11.addActionListener(this);
cai12 = new JMenuItem("新窗口(W)");
cai12.addActionListener(this);
cai13 = new JMenuItem("打开(O)");
cai13.setAccelerator(KeyStroke.getKeyStroke(79,2));
cai13.addActionListener(this);
cai14 = new JMenuItem("保存(S)");
cai14.setAccelerator(KeyStroke.getKeyStroke(83,2));
cai14.addActionListener(this);
cai15 = new JMenuItem("另存为(A)");
cai15.addActionListener(this);
cai16 = new JMenuItem("页面设置(U)");
cai16.addActionListener(this);
cai17 = new JMenuItem("打印(P)");
cai17.addActionListener(this);
cai18 = new JMenuItem("退出(X)");
cai18.addActionListener(this);
cai21 = new JMenuItem("撤销(U)");
cai21.setAccelerator(KeyStroke.getKeyStroke(90,2));
cai21.addActionListener(this);
cai21.setEnabled(false);
cai22 = new JMenuItem("剪切(T)");
cai22.setAccelerator(KeyStroke.getKeyStroke(88,2));
cai22.addActionListener(this);
cai23 = new JMenuItem("复制(C)");
cai23.setAccelerator(KeyStroke.getKeyStroke(67,2));
cai23.addActionListener(this);
cai24 = new JMenuItem("粘贴(P)");
cai24.setAccelerator(KeyStroke.getKeyStroke(86,2));
cai24.addActionListener(this);
cai25 = new JMenuItem("删除(L)");
cai25.setAccelerator(KeyStroke.getKeyStroke(127,0));
cai25.addActionListener(this);
cai26 = new JMenuItem("使用 Bing 搜索...");
cai26.addActionListener(this);
cai27 = new JMenuItem("查找(F)");
cai27.addActionListener(this);
cai28 = new JMenuItem("查找上一个(N)");
cai28.addActionListener(this);
cai29 = new JMenuItem("查找下一个(V)");
cai29.addActionListener(this);
cai210 = new JMenuItem("替换(R)...");
cai210.addActionListener(this);
cai211 = new JMenuItem("(转到G)...");
cai211.addActionListener(this);
cai212 = new JMenuItem("全选(A)");
cai212.setAccelerator(KeyStroke.getKeyStroke(65, 2));
cai212.addActionListener(this);
cai213 = new JMenuItem("时间/日期(D)");
cai213.setAccelerator(KeyStroke.getKeyStroke(116,0));
cai213.addActionListener(this);
cai31 = new JCheckBoxMenuItem("自动换行(W)");
cai31.setMnemonic('W');
cai31.setState(true);
cai31.addActionListener(this);
cai32 = new JMenuItem("字体(F)");
cai32.addActionListener(this);
cai33 = new JMenuItem("前景色");
cai33.addActionListener(this);
cai34 = new JMenuItem("背景色");
cai34.addActionListener(this);
cai41 = new JMenu("缩放(Z)");
cai41.addActionListener(this);
cai42 = new JMenuItem("状态栏(S)");
cai42.addActionListener(this);
cai41_1 = new JMenuItem("放大(I)");
cai41_1.addActionListener(this);
cai41_2 = new JMenuItem("缩小(O)");
cai41_2.addActionListener(this);
cai41_3 = new JMenuItem("恢复默认缩放(O)");
cai41_3.addActionListener(this);
cai51 = new JMenuItem("查看帮助(H)");
cai51.setAccelerator(KeyStroke.getKeyStroke(112,0));
cai51.addActionListener(this);
cai52 = new JMenuItem("发送反馈(F)");
cai52.addActionListener(this);
cai53 = new JMenuItem("关于记事本(A)");
cai53.addActionListener(this);
cai1.add(cai11);
cai1.add(cai12);
cai1.add(cai13);
cai1.add(cai14);
cai1.add(cai15);
cai1.add(cai16);
cai1.add(cai17);
cai1.add(cai18);
cai2.add(cai21);
cai2.add(cai22);
cai2.add(cai23);
cai2.add(cai24);
cai2.add(cai25);
cai2.add(cai26);
cai2.add(cai27);
cai2.add(cai28);
cai2.add(cai29);
cai2.add(cai210);
cai2.add(cai211);
cai2.add(cai212);
cai2.add(cai213);
cai3.add(cai31);
cai3.add(cai32);
cai3.add(cai33);
cai3.add(cai34);
cai41.add(cai41_1);
cai41.add(cai41_2);
cai41.add(cai41_3);
cai4.add(cai41);
cai4.add(cai42);
cai5.add(cai51);
cai5.add(cai52);
cai5.add(cai53);
bar.add(cai1);
bar.add(cai2);
bar.add(cai3);
bar.add(cai4);
bar.add(cai5);
this.setJMenuBar(bar);
text = new JTextArea(16,19);
Font font = new Font("微软雅黑",Font.BOLD,20);
text.setFont(font);
text.setEnabled(true);
//编辑区注册事件监听(与撤销操作有关)
text.getDocument().addUndoableEditListener(undoHandler);
text.getDocument().addDocumentListener(this);
//创建右键菜单
youcd = new JPopupMenu();
cx = new JMenuItem("撤销(U)");
jq = new JMenuItem("剪切(T)");
fz = new JMenuItem("复制(C)");
zt = new JMenuItem("粘帖(P)");
sc = new JMenuItem("删除(D)");
qx = new JMenuItem("全选(A)");
cx.setEnabled(false);
youcd.add(cx);
youcd.addSeparator();
youcd.add(jq);
youcd.add(fz);
youcd.add(zt);
youcd.add(sc);
youcd.addSeparator();
youcd.add(qx);
cx.addActionListener(this);
jq.addActionListener(this);
fz.addActionListener(this);
zt.addActionListener(this);
sc.addActionListener(this);
qx.addActionListener(this);
//创建编辑菜单及菜单项并注册事件监听
text.addMouseListener(new MouseAdapter()
{ public void mousePressed(MouseEvent e)
{ if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件
{ youcd.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单
}
checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性
text.requestFocus();//编辑区获取焦点
}
public void mouseReleased(MouseEvent e)
{ if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件
{ youcd.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单
}
checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性
text.requestFocus();//编辑区获取焦点
}
});
pa = new JPanel();
BorderLayout grid = new BorderLayout();
pa.setLayout(grid);
//设置光标可用性为true
text.getCaret().setVisible(true);
//设置光标位置为文本最后面
text.setCaretPosition(text.getText().length());
if(text.getText().equals("输入用户名")){
text.setText("");
}
else//全选文本框
text.selectAll();
pa.add(text);
//JScorllPane添加滚动条
jsc = new JScrollPane(text);
pa.add(jsc);
//获取原文内容方便比较
oldValue=text.getText();
this.add(pa);
cai2.addMenuListener(new MenuListener(){
public void menuCanceled(MenuEvent e)//取消菜单时调用
{ checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性
}
public void menuDeselected(MenuEvent e)//取消选择某个菜单时调用
{ checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性
}
public void menuSelected(MenuEvent e)//选择某个菜单时调用
{ checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性
}
});
}
//设置复制、粘贴等功能的可用性
public void checkMenuItemEnabled()
{ String selectText=text.getSelectedText();
if(selectText==null)
{ cai22.setEnabled(false);
cai23.setEnabled(false);
cai25.setEnabled(false);
fz.setEnabled(false);
zt.setEnabled(false);
jq.setEnabled(false);
}
else
{ cai22.setEnabled(true);
cai23.setEnabled(true);
cai25.setEnabled(true);
fz.setEnabled(true);
zt.setEnabled(true);
jq.setEnabled(true);
}
//粘帖功能可用性判断
Transferable contents=clipBoard.getContents(this);
if(contents==null){
cai24.setEnabled(false);
zt.setEnabled(false);
}
else
{ cai24.setEnabled(true);
zt.setEnabled(true);
}
}
public void font()
{ final JDialog fontDialog=new JDialog(this,"字体设置",false);
Container con=fontDialog.getContentPane();
con.setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel fontLabel=new JLabel("字体(F):");
fontLabel.setPreferredSize(new Dimension(100,20));//构造一个Dimension,并将其初始化为指定宽度和高度
JLabel styleLabel=new JLabel("字形(Y):");
styleLabel.setPreferredSize(new Dimension(100,20));
JLabel sizeLabel=new JLabel("大小(S):");
sizeLabel.setPreferredSize(new Dimension(100,20));
final JLabel sample=new JLabel("张选仲的记事本-ZXZ's Notepad");
//sample.setHorizontalAlignment(SwingConstants.CENTER);
final JTextField fontText=new JTextField(9);
fontText.setPreferredSize(new Dimension(200,20));
final JTextField styleText=new JTextField(8);
styleText.setPreferredSize(new Dimension(200,20));
final int style[]={Font.PLAIN,Font.BOLD,Font.ITALIC,Font.BOLD+Font.ITALIC};
final JTextField sizeText=new JTextField(5);
sizeText.setPreferredSize(new Dimension(200,20));
JButton okButton=new JButton("确定");
JButton cancel=new JButton("取消");
cancel.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{ fontDialog.dispose();
}
});
Font currentFont=text.getFont();
fontText.setText(currentFont.getFontName());
fontText.selectAll();
//styleText.setText(currentFont.getStyle());
//styleText.selectAll();
if(currentFont.getStyle()==Font.PLAIN)
styleText.setText("常规");
else if(currentFont.getStyle()==Font.BOLD)
styleText.setText("粗体");
else if(currentFont.getStyle()==Font.ITALIC)
styleText.setText("斜体");
else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC))
styleText.setText("粗斜体");
styleText.selectAll();
String str=String.valueOf(currentFont.getSize());
sizeText.setText(str);
sizeText.selectAll();
final JList fontList,styleList,sizeList;
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
final String fontName[]=ge.getAvailableFontFamilyNames();
fontList=new JList(fontName);
fontList.setFixedCellWidth(86);
fontList.setFixedCellHeight(20);
fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
final String fontStyle[]={"常规","粗体","斜体","粗斜体"};
styleList=new JList(fontStyle);
styleList.setFixedCellWidth(86);
styleList.setFixedCellHeight(20);
styleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
if(currentFont.getStyle()==Font.PLAIN)
styleList.setSelectedIndex(0);
else if(currentFont.getStyle()==Font.BOLD)
styleList.setSelectedIndex(1);
else if(currentFont.getStyle()==Font.ITALIC)
styleList.setSelectedIndex(2);
else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC))
styleList.setSelectedIndex(3);
final String fontSize[]={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};
sizeList=new JList(fontSize);
sizeList.setFixedCellWidth(43);
sizeList.setFixedCellHeight(20);
sizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
fontList.addListSelectionListener(new ListSelectionListener()
{ public void valueChanged(ListSelectionEvent event)
{ fontText.setText(fontName[fontList.getSelectedIndex()]);
fontText.selectAll();
Font sampleFont1=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
sample.setFont(sampleFont1);
}
});
styleList.addListSelectionListener(new ListSelectionListener()
{ public void valueChanged(ListSelectionEvent event)
{ int s=style[styleList.getSelectedIndex()];
styleText.setText(fontStyle[s]);
styleText.selectAll();
Font sampleFont2=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
sample.setFont(sampleFont2);
}
});
sizeList.addListSelectionListener(new ListSelectionListener()
{ public void valueChanged(ListSelectionEvent event)
{ sizeText.setText(fontSize[sizeList.getSelectedIndex()]);
//sizeText.requestFocus();
sizeText.selectAll();
Font sampleFont3=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
sample.setFont(sampleFont3);
}
});
okButton.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{ Font okFont=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
text.setFont(okFont);
fontDialog.dispose();
}
});
JPanel samplePanel=new JPanel();
samplePanel.setBorder(BorderFactory.createTitledBorder("示例"));
//samplePanel.setLayout(new FlowLayout(FlowLayout.CENTER));
samplePanel.add(sample);
JPanel panel1=new JPanel();
JPanel panel2=new JPanel();
JPanel panel3=new JPanel();
panel2.add(fontText);
panel2.add(styleText);
panel2.add(sizeText);
panel2.add(okButton);
panel3.add(new JScrollPane(fontList));//JList不支持直接滚动,所以要让JList作为JScrollPane的视口视图
panel3.add(new JScrollPane(styleList));
panel3.add(new JScrollPane(sizeList));
panel3.add(cancel);
con.add(panel1);
con.add(panel2);
con.add(panel3);
con.add(samplePanel);
fontDialog.setSize(350,340);
fontDialog.setLocation(200,200);
fontDialog.setResizable(false);
fontDialog.setVisible(true);
}
public void exitWindowChoose()//关闭窗口时判断方法
{ text.requestFocus();
String str1=text.getText();
if(str1.equals(oldValue)==true)
{ System.exit(0);
}
else
{ int exitChoose=JOptionPane.showConfirmDialog(this,"您的文件尚未保存,是否保存?","退出提示",JOptionPane.YES_NO_CANCEL_OPTION);
if(exitChoose==JOptionPane.YES_OPTION)
{ //boolean isSave=false;
if(isNewFile)
{
String str=null;
JFileChooser fileChooser=new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setApproveButtonText("确定");
fileChooser.setDialogTitle("另存为");
int result=fileChooser.showSaveDialog(this);
if(result==JFileChooser.CANCEL_OPTION)
{ label.setText(" 您没有保存文件");
return;
}
File saveFileName=fileChooser.getSelectedFile();
if(saveFileName==null||saveFileName.getName().equals(""))
{ JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
}
else
{ try
{ FileWriter fw3=new FileWriter(saveFileName);
BufferedWriter bw3=new BufferedWriter(fw3);
bw3.write(text.getText(),0,text.getText().length());
bw3.flush();
fw3.close();
isNewFile=false;
currentFile=saveFileName;
oldValue=text.getText();
this.setTitle(saveFileName.getName()+" - 记事本");
label.setText(" 当前打开文件:"+saveFileName.getAbsoluteFile());
//isSave=true;
}
catch(IOException ioException){
}
}
}
else
{
try
{ FileWriter fw4=new FileWriter(currentFile);
BufferedWriter bw4=new BufferedWriter(fw4);
bw4.write(text.getText(),0,text.getText().length());
bw4.flush();
fw4.close();
//isSave=true;
}
catch(IOException ioException){
}
}
System.exit(0);
//if(isSave)System.exit(0);
//else return;
}
else if(exitChoose==JOptionPane.NO_OPTION)
{ System.exit(0);
}
else
{ return;
}
}
}
public void save(){//保存方法
jfc2 = new JFileChooser();
jfc2.setDialogTitle("另存为...");
int state=jfc2.showSaveDialog(this);
bcwjm=jfc2.getSelectedFile();//获取第一次保存文件夹的路径及原名
if(state==JFileChooser.APPROVE_OPTION){
try{
dir=jfc2.getCurrentDirectory();
str=jfc2.getSelectedFile().getName();
File file = new File(dir,str);
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
bw.write(text.getText());
bw.close();
fw.close();
}
catch(IOException exp){}
}
}
public void actionPerformed(ActionEvent e){
String str=e.getActionCommand();
if(str.equals("新建(N)")){
text.requestFocus();//获取焦点
String str1 = text.getText();
boolean textIsChange = (str1.equals(oldValue))?false:true;//判断是否改变文件
if(textIsChange){
int saveChoose = JOptionPane.showConfirmDialog(this,"你的文件未保存","提示",JOptionPane.YES_NO_CANCEL_OPTION);
if(saveChoose==JOptionPane.YES_OPTION){
String st=null;
JFileChooser file = new JFileChooser();
file.setFileSelectionMode(JFileChooser.FILES_ONLY);
file.setDialogTitle("另存为");
int result=file.showSaveDialog(this);
if(result==JFileChooser.CANCEL_OPTION){
label.setText("你没有选择文件");
return;
}
//获取保存文件名
File saveFileName=file.getSelectedFile();
if(saveFileName==null || saveFileName.getName().equals(""))
{ JOptionPane.showMessageDialog(this,"不合法文件名","不合法文件名",JOptionPane.ERROR_MESSAGE);
}
else{
try
{ FileWriter fw2=new FileWriter(saveFileName);
BufferedWriter bw2=new BufferedWriter(fw2);
bw2.write(text.getText(),0,text.getText().length());
bw2.flush();//刷新该流的缓冲
bw2.close();
isNewFile=false;
currentFile=saveFileName;
oldValue=text.getText();
this.setTitle(saveFileName.getName()+" - 记事本");
label.setText("当前打开文件:"+saveFileName.getAbsoluteFile());
}
catch (IOException ioException)
{
}
}
}
else if(saveChoose==JOptionPane.NO_OPTION)
{ text.replaceRange("",0,text.getText().length());
label.setText("新建文件");
this.setTitle("无标题——记事本");
isNewFile=true;
undo.discardAllEdits(); //撤销所有已“撤销”的操作
cai21.setEnabled(false);
oldValue=text.getText();
}
else if(saveChoose==JOptionPane.CANCEL_OPTION){
return;
}
}
else
{ text.replaceRange("",0,text.getText().length());
label.setText(" 新建文件");
this.setTitle("无标题——记事本");
isNewFile=true;
undo.discardAllEdits();//撤销所有已“撤销”的操作
cai21.setEnabled(false);
oldValue=text.getText();
}
}
else if(str.equals("新窗口(W)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("打开(O)")){
this.setVisible(true);
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle("打开文件...");
//默认方式
jfc1.showOpenDialog(null);
//显示
jfc1.setVisible(true);
//得到文件路径
String filename=jfc1.getSelectedFile().getAbsolutePath();
try{
fr=new FileReader(filename);
br=new BufferedReader(fr);
//从文件中循环读取,并显示到text中
String s="";
String sus="";
while((s=br.readLine())!=null)
{
//显示到text中
sus+=s+"\r\n";
}
text.setText(sus);
}
catch(Exception e1){
e1.printStackTrace();
}
finally
{
try {
fr.close();
br.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
else if(str.equals("保存(S)")){
/* //设置弹出对话框
JFileChooser jfc2=new JFileChooser();
jfc2.setDialogTitle("另存为...");
//默认显示方式
jfc2.showSaveDialog(null);
jfc2.setVisible(true);
//获取文件保存路径
String filename2=jfc2.getSelectedFile().getAbsolutePath();
//写人
fw=null;
bw=null;
try {
fw=new FileWriter(filename2);
bw=new BufferedWriter(fw);
bw.write(this.text.getText());
} catch (Exception e3) {
e3.printStackTrace();
}
finally
{
try {
bw.close();
fw.close();
} catch (Exception e4) {
e4.printStackTrace();
}
}
}*/
if(a==0&&b==0){
save();
a=1;
}
if(a==1&&b==1){
try{
//File file = new File(dir,str);
fw1 = new FileWriter(bcwjm);
bw1 = new BufferedWriter(fw1);
bw1.write(text.getText());
bw1.close();
fw1.close();
currentFile=bcwjm;
oldValue=text.getText();
this.setTitle(bcwjm.getName()+"记事本");
label.setText("当前打开文件:"+bcwjm.getAbsoluteFile());
}
catch(IOException exp){}
}
b=1;
}
else if(str.equals("另存为(A)")){
save();
}
else if(str.equals("页面设置(U)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚且无此功能");
}
else if(str.equals("打印(P)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("退出(X)")){
System.exit(0);
}
else if(str.equals("撤销(U)")){
text.requestFocus();
if(undo.canUndo())
{ try
{ undo.undo();
}
catch (CannotUndoException ex)
{ System.out.println("Unable to undo:" + ex);
//ex.printStackTrace();
}
}
if(!undo.canUndo())
{ editMenu_Undo.setEnabled(false);
}
}
else if(str.equals("剪切(T)")){
text.cut();
}
else if(str.equals("复制(C)")){
/*text.requestFocus();
String str3=text.getSelectedText();
StringSelection selection=new StringSelection(str3);
clipBoard.setContents(selection,null);*/
text.copy();
}
else if(str.equals("粘贴(P)")){
text.paste();
}
else if(str.equals("删除(L)")){
text.replaceSelection(null);
}
else if(str.equals("使用 Bing 搜索...")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}else if(str.equals("查找(F)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("查找上一个(N)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("查找下一个(V)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("替换(R)...")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("转到(G)...")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("全选(A)")){
text.selectAll();
}
else if(str.equals("时间/日期(D)")){
LocalDateTime date = LocalDateTime.now();
text.setText(date.toString());
}else if(str.equals("自动换行(W)")){
if(cai31.getState())
text.setLineWrap(true);
else
text.setLineWrap(false);
}
else if(str.equals("字体(F)")){
text.requestFocus();
font();
}
else if(str.equals("前景色")){
Color newColor1 = JColorChooser.showDialog(this,"选择你所喜欢的前景颜色",text.getForeground());
if(newColor1!=null){
text.setForeground(newColor1);
}
}
else if(str.equals("背景色")){
Color newColor = JColorChooser.showDialog(this,"选择你所喜欢的背景颜色",text.getBackground());
if(newColor!=null){
text.setBackground(newColor);
}
}
else if(str.equals("缩放(Z)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("状态栏(S)")){
}
else if(str.equals("放大(I)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("缩小(O)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("恢复默认缩放")){
text.requestFocus();
JOptionPane.showMessageDialog(this,"尚无此功能");
}
else if(str.equals("查看帮助(H)")){
try {
String url = "https://i.csdn.net/#/uc/profile";
java.net.URI uri = java.net.URI.create(url);
java.awt.Desktop dp = java.awt.Desktop.getDesktop();
if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
dp.browse(uri);
}
} catch (java.lang.NullPointerException e5) {
e5.printStackTrace();
} catch (java.io.IOException e5) {
e5.printStackTrace();
}
}
else if(str.equals("关于反馈(F)")){
}
else if(str.equals("关于记事本(A)")){
text.requestFocus();
JOptionPane.showMessageDialog(this,
"///—————————————————————《欢迎使用霖霖记事本》————————————————————///\n"+
"——————————————————————————————————————————————————————\n"+
"创作人:鲜霖\n"+
"e-mail:linxian479@gmail.com\n"+
"———1589861957@qq.com\n"+
"创作时间:2020年6月20日\n"+
"vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n",
"记事本",JOptionPane.INFORMATION_MESSAGE);
}
}
public void removeUpdate(DocumentEvent e)
{ cai21.setEnabled(true);
}
public void insertUpdate(DocumentEvent e)
{ cai21.setEnabled(true);
}
public void changedUpdate(DocumentEvent e)
{ cai21.setEnabled(true);
}//DocumentListener结束
class UndoHandler implements UndoableEditListener
{ public void undoableEditHappened(UndoableEditEvent uee)
{ undo.addEdit(uee.getEdit());
}
}
}
主类
import data.*;
public class Xiaoxiaonote {
public static void main(String [] args){
Mynote s = new Mynote();
}
}
注:部分参考参考原文
初学,另外英语极差所以变量命名主要为拼音首字母,主要是为了交作业呀!