美文网首页
2019-11-23

2019-11-23

作者: 落幕12 | 来源:发表于2019-11-23 14:04 被阅读0次

eclipse 实现简单文本框的各项功能(新建,保存,退出,复制,粘贴)

package test;

importjava.awt.FileDialog;

importjava.awt.HeadlessException;

importjava.awt.Point;

importjava.awt.TextArea;

importjava.awt.TextComponent;

importjava.awt.Toolkit;

importjava.awt.datatransfer.Clipboard;

importjava.awt.datatransfer.DataFlavor;

importjava.awt.datatransfer.StringSelection;

importjava.awt.datatransfer.Transferable;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

importjava.awt.event.WindowListener;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.File;

importjava.io.FileNotFoundException;

importjava.io.FileReader;

importjava.io.FileWriter;

importjava.io.IOException;

importjavax.swing.AbstractButton;

importjavax.swing.JFrame;

importjavax.swing.JMenu;

importjavax.swing.JMenuBar;

importjavax.swing.JMenuItem;

importjavax.swing.JPanel;

publicclassJMenuDemoextendsJFrame {

privateJPanelp;

privateJMenuBarmenuBar;

private JMenu menuFile,menuEdit,menuHelp;

private JMenuItem miSave,miCopy,miPaste,miNew,miOpen,miExit;

private FileDialog openDia,saveDia,newDia;

privateTextArea  ta;

private File file=null;

//Clipboard剪切板

privateClipboardclipbd= getToolkit().getSystemClipboard();//获取系统剪切板

publicJMenuDemo()throwsHeadlessException {

super("文本编辑器");

p=newJPanel();

menuBar=newJMenuBar();

this.setJMenuBar(menuBar);//将菜单设置到窗体中

menuFile=newJMenu("文件");

menuEdit=newJMenu("编辑");

menuHelp=newJMenu("帮助");

menuBar.add(menuFile);

menuBar.add(menuEdit);

menuBar.add(menuHelp);

miNew=newJMenuItem("新建");

miOpen=newJMenuItem("打开");

miExit=newJMenuItem("退出");

miSave=newJMenuItem("保存");

miCopy=newJMenuItem("复制");

miPaste=newJMenuItem("粘贴");

menuFile.add(miNew);

menuFile.add(miOpen);

menuFile.add(miExit);

menuEdit.add(miSave);

menuEdit.add(miCopy);

menuEdit.add(miPaste);

this.add(p);

this.setSize(400,300);

this.setLocation(200,100);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

openDia=newFileDialog(this,"我要打开",FileDialog.LOAD);

saveDia=newFileDialog(this,"我要保存",FileDialog.SAVE);

newDia=newFileDialog(this,"我要新建",FileDialog.LOAD);

/*(FileDialog(Frame parent, String title,intmode)

intmode 有SAVE(保存)和LOAD(读写)两种

getDirectory()+getFile() = 文件路径)*/

ta=newTextArea();//新建文本框

this.add(ta);//加入文本框

myEvent();

this.setVisible(true);

}

publicvoidmyEvent() {

//退出

miExit.addActionListener(newActionListener() {

        publicvoidactionPerformed(ActionEvente) {

            System.exit(0);

        }

    });

//新建

miNew.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente) {

ta.setText("");

}

});

//复制

miCopy.addActionListener(newActionListener() {

publicvoidactionPerformed(ActionEvente) {

Stringselection=ta.getSelectedText();

      if(selection==null)

        return;

      StringSelectionclipString=newStringSelection(selection);// 封装文本内容

      clipbd.setContents(clipString,clipString); // 把文本内容设置到系统剪贴板

}

});

//粘贴

miPaste.addActionListener(newActionListener() {

publicvoidactionPerformed(ActionEvente) {

Clipboardclipboard= Toolkit.getDefaultToolkit().getSystemClipboard();

        // 获取剪贴板中的内容

        Transferabletrans=clipboard.getContents(null);

        if(trans!=null) {

            // 判断剪贴板中的内容是否支持文本

            if(trans.isDataFlavorSupported(DataFlavor.stringFlavor)) {

                try{

                    // 获取剪贴板中的文本内容

                    Stringtext= (String)trans.getTransferData(DataFlavor.stringFlavor);

                  // 获得当前光标位置 

intcur=ta.getCaretPosition(); 

                    // 得到光标之后的字符串 

                    StringtailString=ta.getText().substring(cur); 

                    // 得到光标之前的字符串 

                    StringheadString=ta.getText().substring(0,cur); 

                    // 拼接字符串 并输出 

                    ta.setText(headString+text+tailString); 

                }catch(Exceptione1) {

                    e1.printStackTrace();

                }

            }

        }

}

});

//打开

miOpen.addActionListener(newActionListener() {

 @Override

        publicvoidactionPerformed(ActionEvente) {

            openDia.setVisible(true);

            Stringstr=openDia.getFile();//获取选中的文件名称

            Stringdir=openDia.getDirectory();//获取目录

            if(str==null||dir==null)//用户不想打开文件

                return;

            ta.setText("");//将之前的文件的文本删除

            file=newFile(dir,str);

            BufferedReaderbr=null;

            try 

             {

                //将硬盘上的文件内容写到文本区域中

                br=newBufferedReader(newFileReader(file));

                Stringlen=null;

                  try 

                  {

                     while((len=br.readLine())!=null)

                     {

                      ta.append(len+"\r\n");

                      }

                  } 

                  catch(IOExceptione1)

                 {

                    e1.printStackTrace();

                  }

              } 

             catch(FileNotFoundExceptione1)

             {

                e1.printStackTrace();

             }

            finally

            {

                try 

                {

                    br.close();

                } 

                catch(IOExceptione1)

                {

                    e1.printStackTrace();

                }

            }

        }

    });

//保存

miSave.addActionListener(newActionListener() {

@Override

        publicvoidactionPerformed(ActionEvente) {

            if(file==null) //如果已经有路径则在原路径上进行保存

            {

               saveDia.setVisible(true);

               Stringstr=saveDia.getFile();

               Stringdir=saveDia.getDirectory();

               System.out.println(dir+"------------"+str);//用户文件保存位置

               if(dir==null||str==null)//新写的文件没保存

                   return;

               file=newFile(dir,str);

            }

            BufferedWriterbufw=null;

            try 

            {

                 bufw=newBufferedWriter(newFileWriter(file));

                Stringtext=ta.getText();//从文本区域中获取数据,写入文件中

                bufw.write(text);

                bufw.flush();

            } 

            catch(IOExceptione1) 

            {

                thrownewRuntimeException("没这文件");

            }

            finally{

                try 

                {

                    bufw.close();

                } 

                catch(IOExceptione1)

                {

                    e1.printStackTrace();

                }

            }

        }

    });

    this.addWindowListener((WindowListener)newWindowAdapter() {

        publicvoidwindowClosing(WindowEvente) {

            System.exit(0);

        }

    });

}

publicstaticvoidmain(String[]args) {

newJMenuDemo();

}

}

相关文章

网友评论

      本文标题:2019-11-23

      本文链接:https://www.haomeiwen.com/subject/wwrhwctx.html