JAVA:一个简易的文本编辑器
生活随笔
收集整理的這篇文章主要介紹了
JAVA:一个简易的文本编辑器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
獻給JAVA的:從接觸到喜歡到討厭到愛
Today,我們來做一個JAVA的文本編輯器,使用的基礎知識有AWT,I/O流,異常處理,數組,循環,編輯器是Eclipse IDE,編譯環境為javaSE-10,該文本編輯器有以下九項功能
1.可以新建文本文件 2.可以進行頁面設置 3.可以查看幫助內容 4.可以刪除你所寫的 5.可以查看當前系統時間 6.可以打開文本文件 7.可以保存文本文件 8.系統會監控你在這個編輯器上的所有行為并顯示在屏幕上 9.可以計數你所輸入的字母和數字的個數以下是這個文本編譯器的源代碼,里面有相當豐富的注釋內容,這里就不分塊解釋了
//代碼整體布局是 //前面是向容器里添加組件 //中間是為組件添加監聽器 //后面是一些功能函數 package Xiti1; //導入所需的包 import java.util.Calendar; import java.awt.MenuBar; import java.awt.Menu; import java.awt.Frame; import java.awt.Button; import java.awt.TextArea; import java.awt.Dialog; import java.awt.MenuItem; import java.awt.Color; import java.awt.FileDialog; import java.awt.Label; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.IOException; import java.io.InputStreamReader; import java.awt.event.MouseMotionListener; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.MouseEvent; public class OMG2 implements MouseMotionListener,ActionListener{//定義變量private TextArea ta;private String s = "";private String s7="";private String s8="";private Frame fr;private Dialog d;private Button b1; private Button b2;private Button b3; private Button b4; private Calendar cal;private int tongji1;private int tongji2;private char[] shuzu;//構造方法public OMG2() {//從第48行到第94行都是向BorderLayout容器里添加組件Frame fr = new Frame("文本編輯器");TextArea ta = new TextArea();MenuBar mb = new MenuBar();Menu m1 = new Menu("文件");Menu m2 = new Menu("編輯");Menu m3 = new Menu("幫助");Menu m4 = new Menu("工具欄");MenuItem mi1 = new MenuItem("保存");MenuItem mi2 = new MenuItem("新建");MenuItem mi3 = new MenuItem("退出");MenuItem mi4 = new MenuItem("展示幫助文檔");MenuItem mi5 = new MenuItem("打開");MenuItem mi6 = new MenuItem("頁面設置");MenuItem mi7 = new MenuItem("時間和日期");MenuItem mi8 = new MenuItem("復制");MenuItem mi9 = new MenuItem("粘貼");MenuItem mi10 = new MenuItem("剪貼");MenuItem mi11 = new MenuItem("撤銷");MenuItem mi12 = new MenuItem("刪除");MenuItem mi13 = new MenuItem("Web工具");MenuItem mi14 = new MenuItem("繪圖");MenuItem mi15 = new MenuItem("自定義");MenuItem mi16 = new MenuItem("統計");m1.add(mi1);m1.add(mi2);m1.add(mi5);m1.add(mi3);m1.add(mi6);m2.add(mi7);m2.add(mi8);m2.add(mi9);m2.add(mi10);m2.add(mi11);m2.add(mi12);m2.add(m4);m3.add(mi4);m4.add(mi13);m4.add(mi14);m4.add(mi15);m4.add(mi16);mb.add(m1);mb.add(m2);mb.add(m3);Button b1 = new Button("紅色");Button b2 = new Button("黃色");Button b3 = new Button("藍色");Button b4 = new Button("綠色");//MenuItem,Menu,MenuBar,Frame這三者關系為//MenuItem通常加到Menu里面,Menu必須加到MenuBar里面,MenuBar必須加到Frame里面 fr.setMenuBar(mb);//設置組件TaxtArea為可編輯的ta.setEditable(true);//通過接口為組件TextArea添加鼠標移動監聽器ta.addMouseMotionListener(this);//通過事件適配器為組件TextArea添加鍵盤敲擊器ta.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent e) {System.out.println("key Pressed");}public void keyReleased(KeyEvent e) {System.out.println("key Released");}public void keyTyped(KeyEvent e) {s = s + e.getKeyChar(); }});//為菜單項mi1(保存)添加動作監聽器mi1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("您正在保存文件,請稍后");try {//跳轉到第294行的baocun()函數baocun();} catch (IOException e1) {e1.printStackTrace();}}});//為菜單項mi2(新建)添加動作監聽器mi2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {System.out.println("正在新建文本文件,請稍后");try {//xinjian()函數對應第281行xinjian();} catch (IOException e1) {e1.printStackTrace();}}});//為菜單項mi3(退出)添加動作監聽器mi3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {//用戶點擊這個MenuItem就退出程序System.out.println("您已成功退出");System.exit(1);}});//為菜單項mi4(展示幫助文檔)添加動作監聽器mi4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {//向組件TextArea寫ta.setText("這是個文本編輯器 \n你可以把你想寫的寫到下面那個綠色區域\n\n這個文本編輯器的功能有:\n"+"1.可以新建文本文件\n2.可以進行頁面設置\n3.可以查看幫助內容\n4.可以刪除你所寫的\n5.可以查看當前系統時間\n"+"6.可以打開文本文件\n7.可以保存文本文件\n8.系統會監控你在這個編輯器上的所有行為\n9.可以計數你所輸入的字母和數字的個數"+"\n\n注意事項\n新建的文本文件的位置在D://自己的軟件//66.txt\n這是我自己設置的,你的電腦可能沒有這個目錄\n"+ "當你獲取源代碼后請自行修改,否則會引發異常");}});//為菜單項mi5(打開)添加動作監聽器mi5.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {try {//跳轉函數dakai(),在第257行//該函數返回了一個String類型的值s8 = dakai();//把該函數返回的這個值寫到TextArea里ta.setText(s8);} catch (FileNotFoundException e1) {e1.printStackTrace();}}});//為菜單項mi6(頁面設置)添加動作監聽器mi6.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//跳轉函數yemiansheji(),在第315行yemianshezhi();}});//為容器Frame添加窗口監聽器fr.addWindowListener(new WindowAdapter() {public void windowOpened(WindowEvent e) {System.out.println("window open");}public void windowClosing(WindowEvent e) {System.exit(1);}public void windowIconified(WindowEvent e) {System.out.println("window Iconified");}public void windowDeiconified(WindowEvent e) {System.out.println("window Deiconified");}public void windowActivated(WindowEvent e) {System.out.println("window Activated");}public void windowDeactivated(WindowEvent e) {System.out.println("window Deactivated");}});//為菜單項mi7(時間和日期)添加動作監聽器mi7.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//實例化一個Calendar對象//這個Calendar在java.unit包里,它和系統時間相關Calendar cal = Calendar.getInstance();//獲取當前系統的年份int y = cal.get(Calendar.YEAR);//獲取當前系統的月份int m = cal.get(Calendar.MONTH);int d = cal.get(Calendar.DATE);int h = cal.get(Calendar.HOUR_OF_DAY);int mi = cal.get(Calendar.MINUTE);int s = cal.get(Calendar.SECOND);String t = "現在時刻是"+y+"年"+m+"月"+d+"日"+h+"時"+mi+"分鐘"+s+"秒";ta.setText(t);}});//為菜單項mi12(刪除)添加動作監聽器mi12.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//刪除其實就是用一個空字符串代替你所寫的String t1 = "";ta.setText(t1);} });//為菜單項mi16(統計)統計動作監聽器mi16.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//tongji()函數在第238行tongji();ta.setText("你所輸入字母的個數是:"+tongji1+"\n你所輸入數字的個數是:"+tongji2);}});//向Frame添加組件TextAreafr.add(ta);//設置容器Frame是可見的fr.setVisible(true);//設置容器的左上角的位置和容器本身的大小fr.setBounds(100,100,400,400);}public static void main(String[] args) {OMG2 o = new OMG2();}public void tongji() {//統計用戶輸入的數字個數和字母個數//現把用戶輸入的存到數組里char[] shuzu = s.toCharArray();for(int i=0;i<shuzu.length;i++) {//如果是字母if((shuzu[i]<=122)&&(shuzu[i]>=97)) {tongji1 = tongji1 + 1;}//如果是數字if((shuzu[i]>=49)&&(shuzu[i]<=57)) {tongji2 = tongji2 + 1;}} }//根據你的輸入打開一個文本文件public String dakai() throws FileNotFoundException {//使用組件FileDialog,然后使用函數getFile和獲取輸入的文件名FileDialog fd = new FileDialog(fr,"打開",FileDialog.LOAD);fd.setVisible(true);//如果你沒有輸入文件名if(fd.getFile()==null) {System.out.println("打開失敗");}try {//獲取你輸入文件名的路徑,并將它作為參數傳遞給流FileInputStream,把這個流作為參數傳遞給流InputStreamReaderFileInputStream fis1 = new FileInputStream(fd.getDirectory()+fd.getFile());InputStreamReader isr1 = new InputStreamReader(fis1);//定義一個數組,這個數組存了你所輸入那個文件的內容char[] cbuf = new char[10];isr1.read(cbuf, 0, 10);for(int j=0;j<10;j++) {s7 = s7 + cbuf[j];}}catch(Exception e) {System.out.println("打開異常"); }//返回你所輸入文件里的內容,并顯示在TextArea里面return s7;}public void xinjian() throws IOException {//這里我選擇在D://自己的軟件這個目錄下新建一個文本文件66.txtString s = "D://自己的軟件";String p = "66.txt";File f = new File(s,p);if(!f.exists()) {//新建文件的專屬函數creatNewFile()f.createNewFile();System.out.println("新建成功");System.out.println("新建文本文件的位置:"+f.getPath());} }//將你在TextArea里面所寫的保存到一個文本文件里public void baocun() throws IOException,NullPointerException {FileDialog fd = new FileDialog(fr,"請輸入你要保存的文件名",FileDialog.SAVE);System.out.println("你在TextArea里的輸入為:"+s);fd.setVisible(true);if(fd.getDirectory()==null) {System.out.println("你沒有選擇保存位置");}try {FileOutputStream fos = new FileOutputStream(fd.getDirectory() + fd.getFile());OutputStreamWriter osw = new OutputStreamWriter(fos);osw.write(s);osw.flush();osw.close();fos.close(); }catch(Exception e) {System.out.println("保存異常");}finally {System.out.println("您的內容保存到了:"+fd.getDirectory()+fd.getFile());} }//頁面設計設計的是Dialog,你按不同的按鈕頁面會變成不同的顏色public void yemianshezhi() {Dialog d;d = new Dialog(fr,"頁面設置",true);d.setBounds(200,200,400,500);Label l = new Label("設置背景顏色,只需點擊對應的按鈕即可設置成相應的顏色");Button b1 = new Button("紅色");Button b2 = new Button("黃色");Button b3 = new Button("藍色");Button b4 = new Button("綠色");d.add(l,"North");d.add(b1,"Center");d.add(b2,"East");d.add(b3,"South");d.add(b4,"West");d.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(1);}});b1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {b1.setBackground(Color.RED);}});b2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {b2.setBackground(Color.YELLOW);}});b3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {b3.setBackground(Color.BLUE);}});b4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {b4.setBackground(Color.GREEN);}});d.setVisible(true); }public void actionPerformed(ActionEvent e) {System.exit(1);}@Overridepublic void mouseDragged(MouseEvent e) {System.out.println("mouse Dragged");}@Overridepublic void mouseMoved(MouseEvent e) {} }總結
以上是生活随笔為你收集整理的JAVA:一个简易的文本编辑器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片机关于protues中数码管的显示
- 下一篇: Windows下Nginx源码编译指南