版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE30第頁《Java課程設(shè)計》記事本課程設(shè)計報告書目錄一、設(shè)計課題二、設(shè)計目的三、操作環(huán)境四、設(shè)計場所(機房號、機器號或自己機器)五、設(shè)計過程(設(shè)計內(nèi)容及主要程序模塊)六、本次設(shè)計中用到的課程知識點(列出主要知識點)七、設(shè)計過程中遇到的問題及解決辦法八、程序清單一、設(shè)計課題及內(nèi)容課題名稱:記事本內(nèi)容:文件菜單中包括新建、打開、保存、另存為、退出等菜單項,其中新建菜單項可以新建一個記事本程序;打開菜單項可以打開一個用戶指定的文本文件,并將其內(nèi)容顯示在記事本的文本區(qū)域;保存和另存為菜單項可分別實現(xiàn)文件的保存和另存為編輯菜單主要包括復(fù)制、剪切和粘貼等菜單項,可分別實現(xiàn)編輯區(qū)文本內(nèi)容的編輯操作幫助菜單主要是現(xiàn)實軟件版本等信息記事本還實現(xiàn)了點右鍵彈出快捷菜單功能,加快文檔的編輯效率記事本文本區(qū)引入滾動窗格,實現(xiàn)編輯區(qū)的滾動查看可自行擴(kuò)充其功能:比如加入格式菜單設(shè)置文本的字體等、編輯菜單中加入查找、替換等菜單項二、設(shè)計目的熟悉java.awt,java.math,java.swing等包中的組件。掌握圖形界面設(shè)計方法。掌握窗體按鈕和文本控件對事件的響應(yīng)。了解java自帶的函數(shù)方法。三、操作環(huán)境操作系統(tǒng):MicrosoftWindows10CPU:IntelCorei5-8300H2.30GHz內(nèi)存:8.00GB四、設(shè)計場所教室b403五、設(shè)計過程(設(shè)計內(nèi)容及主要模塊,不少于3000字)設(shè)計要求1)界面設(shè)計2)功能實現(xiàn)文件菜單:新建、打開、保存、另存為、退出等。(2)其中新建菜單項可以新建一個記事本程序;打開菜單項可以打開一個用戶指定的文本文件,并將其內(nèi)容顯示在記事本的文本區(qū)域;保存和另存為菜單項可分別實現(xiàn)文件的保存和另存為3)編輯菜單:復(fù)制、剪切和粘貼等4)幫助菜單:軟件版本信5)右鍵彈出快捷菜單2.總體設(shè)計右鍵快捷記事本功能模塊圖:右鍵快捷記事本格式幫助編輯文件格式幫助編輯文件顏色字體關(guān)于記事本粘貼剪切復(fù)制退出另存為保存打開新建顏色字體關(guān)于記事本粘貼剪切復(fù)制退出另存為保存打開新建 圖一功能模塊圖功能描述打開記事本。首先是標(biāo)準(zhǔn)型的記事本,擁有文件、編輯。格式和幫助。如圖1所示:圖1標(biāo)準(zhǔn)型記事本界面2、在標(biāo)準(zhǔn)型的記事本界面中,進(jìn)行的新建一個本件名字叫新記事本。如圖2圖2新建記事本功能用打開文件打開剛剛新建的新記事本。如圖三所示。圖3—打開文件點擊退出即可退出,如圖4所示:圖4—退出記事本點擊幫助可以看到有關(guān)記事本的相關(guān)信息,其中有作者名、版本、許可條款、隱私聲明等必要信息。如圖5所示:圖5—幫助相關(guān)信息6、右鍵可實現(xiàn)復(fù)制、粘貼、剪切、清除等常用功能,方便用戶可以快捷方便的使用記事本。如圖6所示:圖6—右鍵功能7、編輯也可實現(xiàn)制、粘貼、剪切、清除等常用功能,方便用戶選擇自己適合的方式,自由選擇方便的快捷方式使用。如圖7:圖7—編輯3.詳細(xì)設(shè)計1)流程圖如下:打開程序打開程序新建記事本新建記事本打開記事本打開記事本剪切清除粘貼復(fù)制剪切清除粘貼復(fù)制完成完成另存為保存另存為保存退出退出相應(yīng)的Java類有:Notebook類:主類,添加一些記事本需要的的一些方法,對繼承類的一些組件進(jìn)行實體化,為每個按鈕創(chuàng)建“這是什么”的幫助信息,按右鍵的時候觸發(fā)什么,輸出相應(yīng)的幫助信息,每件事件進(jìn)行監(jiān)聽,引用的的軟件包和部分代碼如下:importjava.io.*;importjava.awt.event.*;importjava.awt.*;importjavax.swing.*;importjava.swing.*;//功能:提供一組“輕量級”(所有Java語言)組件,盡可能最大程度地在所有平臺上工作。importjavax.swing.JFrame;//功能:構(gòu)造一個初始時不可見的新窗體。importjavax.swing.JPanel;//功能:創(chuàng)建具有雙緩沖和流布局的新JPanel。importjavax.swing.JLabel;//功能:用于短文本字符串或圖像或二者的顯示區(qū)。importjavax.swing.JButton;//功能:創(chuàng)建不帶有設(shè)置文本或圖標(biāo)的按鈕。importjavax.swing.JTextField;//功能:是一個輕量級組件,它允許編輯單行文本。publicclassNotebook{JButtonb_save,b_close;//按鈕 JTextAreatextArea;//文本框 FiletempFile;//文件 JPaneljp;//面板JLabelstateBar;//標(biāo)簽 JLabeljl,jj;textArea=newJTextArea();Filef=jfc.getSelectedFile();FileReaderfr=newFileReader(f); fr.read(ch); Stringstr=newString(ch); textArea.setText(str); tempFile=f;Filef=jfc.getSelectedFile(); //如果沒有選取文件,下面的jfc.getName(f)將會返回輸入的文件名 fname=jfc.getName(f);
}importjava.awt.event.*;//功能:提供處理由AWT組件所激發(fā)的各類事件的接口和類。importjava.awt.event.ActionListener;//功能:用于接收操作事件的偵聽器接口。importjava.awt.event.KeyListener;//功能://功能:用于接收鍵盤事件(擊鍵)的偵聽器接口importjava.awt.event.MouseMotionListener;//功能:用于接收組件上的鼠標(biāo)移動事件的偵聽器接口。importjava.awt.event.WindowListener;//功能:用于接收窗口事件的偵聽器接口。importjava.awt.event.TextListener;//功能:用于接收文本事件的偵聽器接口。importjava.awt.event.ItemListener//功能:接收項事件的偵聽器接口。 //編輯區(qū)鼠標(biāo)事件,點擊右鍵彈出"編輯"菜單 textArea.addMouseListener(newMouseAdapter() { publicvoidmouseReleased(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON3) popUpMenu.show(e.getComponent(),e.getX(),e.getY()); }//e.getComponent()和textArea具有同等效果 publicvoidmouseClicked(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON1) popUpMenu.setVisible(false); } //為窗口添加"關(guān)閉"事件的響應(yīng) this.addWindowListener(newWindowAdapter() { publicvoidwindowClosing(WindowEvente) { whenExit(); } });//響應(yīng)菜單項"新建"的事件 publicvoidactionPerformed(ActionEvente) { if(e.getSource()==f_new) { saveFileDialog(); return; } //響應(yīng)菜單項"打開"的事件 if(e.getSource()==f_open){ openFileDialog();}//響應(yīng)菜單項"保存"和"按鈕"保存"的事件 if((e.getSource()==b_save)||(e.getSource()==f_save)) { try{ Stringstr=textArea.getText(); FileWriterfw=newFileWriter(tempFile); fw.write(str); fw.close(); //isCurrentFileExists=true; tempFile=tempFile;} catch(Exceptionex){ ex.printStackTrace(); }} //響應(yīng)菜單"另存為"的事件 if(e.getSource()==f_saveas){ intoption=jfc.showDialog(this,"另存為"); Stringfname=null; if(option==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile();//如果沒有選取文件,下面的jfc.getName(f)將會返回輸入的文件名 fname=jfc.getName(f); if(fname!=null&&fname.trim().length()>0){ if(fname.endsWith(".txt")) ; else{ fname=fname.concat(".txt"); }} if(f.isFile()) fname=f.getName(); f=jfc.getCurrentDirectory(); f=newFile(f.getPath().concat(File.separator).concat(fname)); try{ f.createNewFile(); Stringstr=textArea.getText(); FileWriterfw=newFileWriter(f); fw.write(str); fw.close(); } catch(Exceptionex){ ex.printStackTrace(); }}} //響應(yīng)"退出"菜單和"退出"按鈕的事件 if((e.getSource()==f_close)||(e.getSource()==b_close)){ whenExit(); } if(e.getSource()==e_copy||e.getSource()==je_copy){ copy(); } if(e.getSource()==e_paste||e.getSource()==je_paste){ paste(); } if(e.getSource()==e_cut||e.getSource()==je_cut){ cut(); } if(e.getSource()==e_clear||e.getSource()==je_clear){ clear(); } if(e.getSource()==e_selectAll||e.getSource()==je_selectAll){ selectAll(); }importjava.awt.*;//功能:包含用于創(chuàng)建用戶界面和繪制圖形圖像的所有類。publicinterfaceActiveEvent//功能:知道如何對自身進(jìn)行指派的事件的接口。publicclassChoice//功能:Choice類表示一個彈出式選擇菜單。publicclassColor//功能:用于封裝默認(rèn)sRGB顏色空間中的顏色,或者用于封裝由\o"java.awt.color中的類"ColorSpace標(biāo)識的任意顏色空間中的顏色。publicclassMenu//功能:對象是從菜單欄部署的下拉式菜單組件。publicNotebook() { jfc.addChoosableFileFilter(newFileNameExtensionFilter("文本文件(*.txt)","txt")); jmb=newJMenuBar(); textArea=newJTextArea(); jsp=newJScrollPane(textArea); file=newJMenu("文件"); edit=newJMenu("編輯"); style=newJMenu("格式"); help=newJMenu("幫助"); je_copy=newJMenuItem("復(fù)制(C)"); je_paste=newJMenuItem("粘貼(P)"); je_cut=newJMenuItem("剪切(X)"); je_clear=newJMenuItem("清除(D)"); je_selectAll=newJMenuItem("全選(A)"); je_find=newJMenuItem("查找(F)"); je_replace=newJMenuItem("替換(R)"); je_copy.addActionListener(this); //給彈窗式的各組件添加監(jiān)聽器 je_paste.addActionListener(this); je_cut.addActionListener(this); je_clear.addActionListener(this); je_selectAll.addActionListener(this); je_find.addActionListener(this); je_replace.addActionListener(this); //給界面上方的菜單條添加監(jiān)聽器 f_new=newJMenuItem("新建(N)"); f_new.setAccelerator(KeyStroke.getKeyStroke('N',InputEvent.CTRL_MASK,false));//設(shè)置帶修飾符快捷鍵 f_new.addActionListener(this); f_open=newJMenuItem("打開(O)"); f_open.setAccelerator(KeyStroke.getKeyStroke('O',InputEvent.CTRL_MASK,false)); f_open.addActionListener(this); f_save=newJMenuItem("保存(S)"); f_save.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_MASK,false)); f_save.addActionListener(this); f_saveas=newJMenuItem("另存為"); f_saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); f_saveas.addActionListener(this); f_close=newJMenuItem("退出(W)"); f_close.setAccelerator(KeyStroke.getKeyStroke('W',InputEvent.CTRL_MASK,false)); f_close.addActionListener(this); e_copy=newJMenuItem("復(fù)制(C)"); e_copy.setAccelerator(KeyStroke.getKeyStroke('C',InputEvent.CTRL_MASK,false)); e_copy.addActionListener(this); e_paste=newJMenuItem("粘貼(V)");e_paste.setAccelerator(KeyStroke.getKeyStroke('V',InputEvent.CTRL_MASK,false)); e_paste.addActionListener(this); e_cut=newJMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke('X',InputEvent.CTRL_MASK,false)); e_cut.addActionListener(this); e_clear=newJMenuItem("清除(D)");e_clear.setAccelerator(KeyStroke.getKeyStroke('D',InputEvent.CTRL_MASK,false)); e_clear.addActionListener(this); e_selectAll=newJMenuItem("全選(A)");e_selectAll.setAccelerator(KeyStroke.getKeyStroke('A',InputEvent.CTRL_MASK,false)); e_selectAll.addActionListener(this); e_find=newJMenuItem("查找(F)"); e_find.setAccelerator(KeyStroke.getKeyStroke('F',InputEvent.CTRL_MASK,false)); e_copy.addActionListener(this); e_replace=newJMenuItem("替換(R)"); e_replace.setAccelerator(KeyStroke.getKeyStroke('R',InputEvent.CTRL_MASK,false)); e_replace.addActionListener(this); s_font=newJMenuItem("字體(T)");s_font.setAccelerator(KeyStroke.getKeyStroke('T',InputEvent.CTRL_MASK,false)); s_font.addActionListener(this); s_color=newJMenuItem("顏色(C)...");s_color.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); s_color.addActionListener(this); h_editor=newJMenuItem("關(guān)于記事本");h_editor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK)); h_editor.addActionListener(this); h_help=newJMenuItem("幫助信息(H)");h_help.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK)); h_help.addActionListener(this); //添加右鍵彈出式菜單 popUpMenu.add(je_copy); popUpMenu.add(je_paste); popUpMenu.add(je_cut); popUpMenu.add(je_clear); popUpMenu.addSeparator(); popUpMenu.add(je_selectAll); popUpMenu.add(je_find); popUpMenu.add(je_replace);}//創(chuàng)建顏色選擇對話框 if(e.getSource()==s_color){ Colorc=JColorChooser.showDialog(this,"請選擇文字顏色",Color.cyan); if(c!=null){ textArea.setForeground(c); } else textArea.setForeground(textArea.getForeground()); } JFrame類:被繼承類的父類,對代碼所用到的所以按鍵、菜單、文本進(jìn)行定義。publicclassNotebookextendsJFrameimplementsActionListener,ItemListener{ //組件創(chuàng)建 JButtonb_save,b_close;//按鈕 JTextAreatextArea;//文本框 FiletempFile;//文件 JPaneljp;//面板 JMenufile,edit,style,help;//菜單 JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy,e_paste,e_cut,e_clear,e_selectAll,e_find,e_replace,s_font,s_color,h_editor,h_help;//菜單條 JMenuBarjmb; JScrollPanejsp;//滾動面板 JPopupMenupopUpMenu=newJPopupMenu();//右鍵彈出式菜單 JLabelstateBar;//標(biāo)簽 JLabeljl,jj; JFileChooserjfc=newJFileChooser();//文件選擇 JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je_find,je_replace;//彈出式菜單條2)所用的部分圖形組件的定義:JMenuBarmenuBar;//菜單條MenueditMenu,viewMenu,helpMenu,time_sys;//菜單:編輯、查看、幫助JMenuItemeditMenu_copy,editMenu_paste;//"編輯"的菜單項JRadioButtonMenuItemviewMenu_standarType; //"查看"的菜單項JMenuItemhelpMenu_helpTopic,helpMenu_aboutCal;//"幫助"的菜單項JTextFielddisplayField;//文本框JButtonbtnBackspace;//按鈕JLabellblSystemType;//用作邊框的標(biāo)簽JPopupMenupopupMenu;//彈出菜單及菜單項Containerdlgtipscon;//用于顯示幫助提示信息的對話框(無邊框)3.定義了組件的初始化以及對界面的排版1)對總框架的總體布局對主框架的初始化操作(僅給出標(biāo)準(zhǔn)型的) this.textArea("文本框"); //設(shè)置部分菜單項的可見性 jp.setVisible(false); file.setVisible(false); edit.setVisible(false); style.setVisible(false); help.setVisible(false); f_new.setVisible(false); f_open.setVisible(false); f_save.setVisible(false); f_close.setVisible(false); f_saveas.setVisible(false); e_copy.setVisible(false); e_paste.setVisible(false); e_cut.setVisible(false); //設(shè)置一些組件的可見性 e_clear.setVisible(false); e_selectAll.setVisible(false); e_find.setVisible(false); e_replace.setVisible(false); s_font.setVisible(false); s_color.setVisible(false); h_editor.setVisible(false); h_help.setVisible(false); jmb.setVisible(false); stateBar.setVisible(false); jl.setVisible(false); jj.setVisible(false); je_copy.setVisible(false); je_paste.setVisible(false); je_cut.setVisible(false); je_clear.setVisible(false); je_selectAll.setVisible(false); je_find.setVisible(false); je_replace.setVisible(false); //設(shè)置窗口大小和可見性 this.setSize(260,245); this.setVisible(true); } 3)記事本運算部分程序的執(zhí)行過程:在該類中,創(chuàng)建監(jiān)聽,響應(yīng)相應(yīng)的事件。publicvoidmouseReleased(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON3) popUpMenu.show(e.getComponent(),e.getX(),e.getY());publicvoidmouseClicked(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON1) popUpMenu.setVisible(false);if(stateBar.getText().equals("已保存")||stateBar.getText().equals("新文檔")){ returntrue; } else{ returnfalse; } if(m==JFileChooser.APPROVE_OPTION){ Filef=jfc.getSelectedFile(); for(inti=0;i<=f.length();i++){ char[]ch=newchar[i]; try{ FileReaderfr=newFileReader(f); fr.read(ch); Stringstr=newString(ch); textArea.setText(str); tempFile=f; } catch(IOExceptione){ e.printStackTrace(); }}} else return;} if(options==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile(); //如果沒有選取文件,下面的jfc.getName(f)將會返回輸入的文件名 fname=jfc.getName(f); if(fname!=null&&fname.trim().length()>0) { if(fname.endsWith(".txt")); else { fname=fname.concat(".txt"); }if(e.getSource()==f_new) { saveFileDialog(); return; } if(e.getSource()==f_open) { openFileDialog(); } if(e.getSource()==f_saveas) { intoption=jfc.showDialog(this,"另存為"); Stringfname=null; if(option==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile();//如果沒有選取文件,下面的jfc.getName(f)將會返回輸入的文件名 fname=jfc.getName(f); if(fname!=null&&fname.trim().length()>0) { if(fname.endsWith(".txt")) ; else { fname=fname.concat(".txt"); }if(c!=null) { textArea.setForeground(c); } else textArea.setForeground(textArea.getForeground()); } if((e.getSource()==f_close)||(e.getSource()==b_close)){ whenExit(); } if(e.getSource()==e_copy||e.getSource()==je_copy){ copy(); } if(e.getSource()==e_paste||e.getSource()==je_paste){ paste(); } if(e.getSource()==e_cut||e.getSource()==je_cut){ cut(); } if(e.getSource()==e_clear||e.getSource()==je_clear){ clear(); } if(e.getSource()==e_selectAll||e.getSource()==je_selectAll){{ selectAll(); }實現(xiàn)的接口:ActionListener、KeyListener和MouseMotionListener。textArea.addMouseListener(newMouseAdapter(){ publicvoidmouseReleased(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON3) popUpMenu.show(e.getComponent(),e.getX(),e.getY()); }//e.getComponent()和textArea具有同等效果 publicvoidmouseClicked(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON1) popUpMenu.setVisible(false); }});{je_copy.addActionListener(this); //給彈窗式的各組件添加監(jiān)聽器 je_paste.addActionListener(this); je_cut.addActionListener(this); je_clear.addActionListener(this); je_selectAll.addActionListener(this); je_find.addActionListener(this); je_replace.addActionListener(this);}六、設(shè)計中用到的課程知識點Java語言程序設(shè)計:布局管理器:BorderLayout、GridLayout窗體類:JFrame,JButton,JMenubar,JMenuItem,JMenu,JLabel,JCheckBox,JPopupMenu,JTextField,七、設(shè)計中遇到的問題及解決方法忘記一些老師上課講的細(xì)節(jié)知識點。翻書找回記憶。右鍵功能不知道怎么實現(xiàn),上課老師視乎沒有講過。旁觸類通,查找網(wǎng)上資料,右鍵類似與左鍵。復(fù)制、剪切、粘貼等功能一起使用時不熟悉不順暢。翻書查資料,上網(wǎng)搜資料。八、程序清單packagetest;importjava.io.File;importjava.io.*;importjava.awt.event.*;importjava.awt.Toolkit;importjava.awt.*;importjavax.swing.*;importjavax.swing.filechooser.*;publicclassNotebookextendsJFrameimplementsActionListener,ItemListener{ //組件創(chuàng)建 JButtonb_save,b_close;//按鈕 JTextAreatextArea;//文本框 FiletempFile;//文件 JPaneljp;//面板 JMenufile,edit,style,help;//菜單 JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy,e_paste,e_cut,e_clear,e_selectAll,e_find,e_replace,s_font,s_color,h_editor,h_help;//菜單條 JMenuBarjmb; JScrollPanejsp;//滾動面板 JPopupMenupopUpMenu=newJPopupMenu();//右鍵彈出式菜單 JLabelstateBar;//標(biāo)簽 JLabeljl,jj; JFileChooserjfc=newJFileChooser();//文件選擇 JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je_find,je_replace;//彈出式菜單條 publicNotebook() { jfc.addChoosableFileFilter(newFileNameExtensionFilter("文本文件(*.txt)","txt")); jmb=newJMenuBar(); textArea=newJTextArea(); jsp=newJScrollPane(textArea); file=newJMenu("文件"); edit=newJMenu("編輯"); style=newJMenu("格式"); help=newJMenu("幫助"); je_copy=newJMenuItem("復(fù)制(C)"); je_paste=newJMenuItem("粘貼(P)"); je_cut=newJMenuItem("剪切(X)"); je_clear=newJMenuItem("清除(D)"); je_selectAll=newJMenuItem("全選(A)"); je_find=newJMenuItem("查找(F)"); je_replace=newJMenuItem("替換(R)"); je_copy.addActionListener(this); //給彈窗式的各組件添加監(jiān)聽器 je_paste.addActionListener(this); je_cut.addActionListener(this); je_clear.addActionListener(this); je_selectAll.addActionListener(this); je_find.addActionListener(this); je_replace.addActionListener(this); //給界面上方的菜單條添加監(jiān)聽器 f_new=newJMenuItem("新建(N)"); f_new.setAccelerator(KeyStroke.getKeyStroke('N',InputEvent.CTRL_MASK,false));//設(shè)置帶修飾符快捷鍵 f_new.addActionListener(this); f_open=newJMenuItem("打開(O)"); f_open.setAccelerator(KeyStroke.getKeyStroke('O',InputEvent.CTRL_MASK,false)); f_open.addActionListener(this); f_save=newJMenuItem("保存(S)"); f_save.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_MASK,false)); f_save.addActionListener(this); f_saveas=newJMenuItem("另存為"); f_saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); f_saveas.addActionListener(this); f_close=newJMenuItem("退出(W)"); f_close.setAccelerator(KeyStroke.getKeyStroke('W',InputEvent.CTRL_MASK,false)); f_close.addActionListener(this); e_copy=newJMenuItem("復(fù)制(C)"); e_copy.setAccelerator(KeyStroke.getKeyStroke('C',InputEvent.CTRL_MASK,false)); e_copy.addActionListener(this); e_paste=newJMenuItem("粘貼(V)"); e_paste.setAccelerator(KeyStroke.getKeyStroke('V',InputEvent.CTRL_MASK,false)); e_paste.addActionListener(this); e_cut=newJMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke('X',InputEvent.CTRL_MASK,false)); e_cut.addActionListener(this); e_clear=newJMenuItem("清除(D)"); e_clear.setAccelerator(KeyStroke.getKeyStroke('D',InputEvent.CTRL_MASK,false)); e_clear.addActionListener(this); e_selectAll=newJMenuItem("全選(A)"); e_selectAll.setAccelerator(KeyStroke.getKeyStroke('A',InputEvent.CTRL_MASK,false)); e_selectAll.addActionListener(this); e_find=newJMenuItem("查找(F)"); e_find.setAccelerator(KeyStroke.getKeyStroke('F',InputEvent.CTRL_MASK,false)); e_copy.addActionListener(this); e_replace=newJMenuItem("替換(R)"); e_replace.setAccelerator(KeyStroke.getKeyStroke('R',InputEvent.CTRL_MASK,false)); e_replace.addActionListener(this); s_font=newJMenuItem("字體(T)"); s_font.setAccelerator(KeyStroke.getKeyStroke('T',InputEvent.CTRL_MASK,false)); s_font.addActionListener(this); s_color=newJMenuItem("顏色(C)..."); s_color.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); s_color.addActionListener(this); h_editor=newJMenuItem("關(guān)于記事本"); h_editor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK)); h_editor.addActionListener(this); h_help=newJMenuItem("幫助信息(H)"); h_help.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK)); h_help.addActionListener(this); //添加右鍵彈出式菜單 popUpMenu.add(je_copy); popUpMenu.add(je_paste); popUpMenu.add(je_cut); popUpMenu.add(je_clear); popUpMenu.addSeparator(); popUpMenu.add(je_selectAll); popUpMenu.add(je_find); popUpMenu.add(je_replace); //編輯區(qū)鼠標(biāo)事件,點擊右鍵彈出"編輯"菜單 textArea.addMouseListener(newMouseAdapter() { publicvoidmouseReleased(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON3) popUpMenu.show(e.getComponent(),e.getX(),e.getY()); }//e.getComponent()和textArea具有同等效果 publicvoidmouseClicked(MouseEvente){ if(e.getButton()==MouseEvent.BUTTON1) popUpMenu.setVisible(false); } }); this.setJMenuBar(jmb); this.setTitle("記事本程序"); file.add(f_new);//添加文件菜單組件 file.add(f_open); file.addSeparator();//加分隔線 file.add(f_save); file.add(f_saveas); file.addSeparator(); file.add(f_close); edit.add(e_copy);//添加編輯菜單組件 edit.add(e_paste); edit.add(e_cut); edit.add(e_clear); edit.addSeparator(); edit.add(e_selectAll); edit.add(e_find); edit.add(e_replace); style.addSeparator(); style.add(s_font); style.add(s_color); jmb.add(file); //添加格式菜單組件 jmb.add(edit); jmb.add(style); jmb.add(help); help.add(h_editor); //添加幫助菜單組件 help.add(h_help); //textArea.setWrapStyleWord(true);//設(shè)置在單詞過長的時候是否要把長單詞移到下一行。 textArea.setLineWrap(true); //設(shè)置在行過長的時候是否要自動換行。 this.add(jsp); //滾動條欄 this.setBounds(500,350,800,600); this.setVisible(true); //為窗口添加"關(guān)閉"事件的響應(yīng) this.addWindowListener(newWindowAdapter() { publicvoidwindowClosing(WindowEvente) { whenExit(); } }); } publicbooleanisCurrentFileSaved() //判斷文件是否被保存 { if(stateBar.getText().equals("已保存")||stateBar.getText().equals("新文檔")) { returntrue; } else{ returnfalse; } } publicvoidopenFileDialog()//打開文件 { intm=jfc.showOpenDialog(this); if(m==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile(); for(inti=0;i<=f.length();i++) { char[]ch=newchar[i]; try{ FileReaderfr=newFileReader(f); fr.read(ch); Stringstr=newString(ch); textArea.setText(str); tempFile=f; } catch(IOExceptione) { e.printStackTrace(); } } } else return;} publicvoidsaveFileDialog() //保存文件對話框 { intoptions=jfc.showSaveDialog(this); Stringfname=null; if(options==JFileChooser.APPROVE_OPTION) { Filef=jfc.getSelectedFile(); //如果沒有選取文件,下面的jfc.getName(f)將會返回輸入的文件名 fname=jfc.getName(f); if(fname!=null&&fname.trim().length()>0) { if(fname.endsWith(".txt")); else { fname=fname.concat(".txt"); } } if(f.isFile()) fname=f.getName(); f=jfc.getCurrentDirectory(); f=newFile(f.getPath().concat(File.separator).concat(fname)); try{ f.createNewFile(); Stringstr=textArea.getText(); FileWriterfw=newFileWriter(f); fw.write(str); fw.close(); //isCurrentFileExists=true; tempFile=f; } catch(Exceptione) { e.printStackTrace(); } } } publicvoidcut(){//剪切 textArea.cut(); popUpMenu.setVisible(false); } publicvoidcopy(){//復(fù)制 textArea.copy(); popUpMenu.setVisible(false); } publicvoidpaste(){//粘貼 textArea.paste(); popUpMenu.setVisible(false); } publicvoidclear(){//清除 textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); popUpMenu.setVisible(false); } publicvoidselectAll(){//全選 textArea.selectAll(); popUpMenu.setVisible(false); } publicvoidwhenExit()//當(dāng)退出程序時判斷文檔狀態(tài) { dispose(); System.exit(0); } //響應(yīng)菜單項"新建"的事件 publicvoidactionPerformed(ActionEvente) { if(e.getSource()==f_new) { saveFil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 九年級政治尊重他人是我的需要課件
- 液壓與氣動技術(shù) 課件 模塊四 課題14
- 單位管理制度集合大合集職工管理篇
- 單位管理制度集粹匯編員工管理
- 議論文結(jié)構(gòu)的六種模式
- 單位管理制度匯編大合集人員管理
- 單位管理制度分享大全【人力資源管理】十篇
- 單位管理制度范例合集員工管理篇十篇
- 單位管理制度呈現(xiàn)合集【人力資源管理篇】十篇
- 萬有引力定律復(fù)習(xí)課件
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- 江蘇省鎮(zhèn)江市實驗學(xué)校2023-2024學(xué)年九年級上學(xué)期期末考試化學(xué)試卷
- 期末 (試題) -2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- GB/T 32066-2024煤基費托合成液體石蠟
- 塔吊運行作業(yè)方案
- 重慶中考數(shù)學(xué)最新26題練習(xí)及答案
- 江蘇衛(wèi)視跨年演唱會電視轉(zhuǎn)播技術(shù)方案-209年精選文檔
- 水電工程施工機械臺時費定額(2004年版)
- 鋼鐵企業(yè)安全生產(chǎn)事故案例匯編
- 安慶市農(nóng)業(yè)雪災(zāi)恢復(fù)重建和救災(zāi)資金使用情況總結(jié)
- 食品工程原理課程設(shè)計攪拌器的設(shè)計
評論
0/150
提交評論