教你用JAVA寫文本編輯器(一)
前言
這裡用swing ,awt寫的。
我們大概要做成一個電腦的記事本那樣的一個編輯器。可以調整字體,字號,顏色。能夠打開、保存文件,新建窗口,點擊退出,還有一個關於介紹的窗口。整體看起來功能不是很多,隻要一部分一部分的去完成就很好辦瞭。
思路分析:
一、首先我們的目標模型就是電腦的記事本,打開編輯器可以看到結構:
1、標題顯示在窗口的title。
2、下面一行是一個工具欄,裡面有文件、編輯、格式、查看、幫助。這裡我們就選文件、格式、幫助來做,大致的情況都差不多。
3、再下面就是一個屏占比超高的 TextArea瞭,他還有個特點是有滾動條。
二、文件菜單欄:這裡有新建窗口,打開文件,保存文件,還有一個退出按鈕。其中的難點主要在打開和保存文件上,為什麼呢。因為我們點開打開和保存兩個按鈕,都會跳出一個文件選擇的Dialog。這東西是不是要自己畫,如果要自己畫,那就相當麻煩瞭,要對磁盤進行遍歷,然後貼到窗口中什麼的。所幸我們有封裝好的工具JFileChooser。
三、格式菜單:彈出一個窗口,有文字的各種形式的屬性選擇,中間一個展示用的文本區域,下面兩個按鈕,確定即保存格式,修改主窗口的屬性。取消則關閉窗口,不改變屬性。
四、幫助菜單:這個是最簡單的,因為隻有一個彈窗,用於顯示文本,所以我們打算從這裡開始做。
OK,對每個部分分析瞭一下感覺清晰瞭很多。接下來我們來第一步,把主窗口畫出來。
具體實現
畫主窗口,並把菜單欄按照各自的關系建好:這裡用到JMenuBar,JMenu、JMenuItem。顧名思義一個是菜單欄,一個是菜單,一個事菜單項。下面看代碼:
public class test5 extends JFrame{ private JMenuBar menuBar; //菜單欄 private JMenu menu_File,menu_Edit,menu_Help,menu_Format; //菜單欄內的菜單 private JMenuItem item_new,item_open,item_save,item_exit; //對於file菜單的子項 private JMenuItem item_undo,item_cut,item_copy,item_stick,item_delete; //對於edit菜單的子項 private JMenuItem item_about; //對於help菜單的子項 private JMenuItem item_word_format; public test5() { initMenuBar(); this.setJMenuBar(menuBar); this.setSize(800,600); this.setTitle("自定義文本編輯器"); this.setVisible(true); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /** * 對menubar進行初始化,這裡有一些小的快捷方式的設置 * 大傢可以考慮對所有的組件都設置一下 * 兩種形式: * menu_File.setMnemonic('f'); 對menu * item_word_format.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,false)); 對item */ public void initMenuBar() { menuBar = new JMenuBar(); menu_File = new JMenu("文件(F)"); menu_File.setMnemonic('f');//f+alt打開 item_new = new JMenuItem("新建"); item_open = new JMenuItem("打開"); item_save = new JMenuItem("保存"); item_exit = new JMenuItem("退出"); menu_File.add(item_new); menu_File.add(item_open); menu_File.add(item_save); menu_File.add(item_exit); //File 菜單 menu_Edit = new JMenu("編輯(E)"); menu_Edit.setMnemonic('e'); item_undo = new JMenuItem("撤銷"); item_cut = new JMenuItem("剪切"); item_copy = new JMenuItem("復制"); item_stick = new JMenuItem("粘貼"); item_delete = new JMenuItem("刪除"); menu_Edit.add(item_undo); menu_Edit.add(item_cut); menu_Edit.add(item_copy); menu_Edit.add(item_stick); menu_Edit.add(item_delete); //Edit 菜單 menu_Help = new JMenu("幫助(H)"); menu_Help.setMnemonic('h'); item_about = new JMenuItem("關於"); menu_Help.add(item_about); //Help 菜單 menu_Format = new JMenu("格式(O)"); menu_Format.setMnemonic('o'); item_word_format = new JMenuItem("字體(F)"); item_word_format.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,false));//給item添加快捷鍵 menu_Format.add(item_word_format); menuBar.add(menu_File); menuBar.add(menu_Edit); menuBar.add(menu_Format); menuBar.add(menu_Help); } public static void main(String[] args) { test5 t5 = new test5(); } }
接下來就是菜單欄下面的文本編輯區域瞭,這裡隻需要用一個JTextArea就可以瞭,別忘瞭還有滾動條(JScrollPane):
public class test5 extends JFrame{ ...
…
private static JTextArea edit_text_area; //private JTextArea edit_text_area; //編輯區域 private JScrollPane scroll_bar; //可滾動的pane 裡面添加edit_text_area就可以變為一個可以滾動的文本框,JScrollPane是一個pane,同時可以設置方向 public test5() { initMenuBar(); initEditArea(); this.setJMenuBar(menuBar); this.setSize(800,600); this.add(scroll_bar); this.setTitle("自定義文本編輯器"); this.setVisible(true); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /** * 初始化編輯區域 * 用scrollpane裝textarea * 同時對pane設置方向 */ public void initEditArea() { edit_text_area = new JTextArea(); scroll_bar = new JScrollPane(edit_text_area); scroll_bar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); } public void initMenuBar() { ... } public static void main(String[] args) { test5 t5 = new test5(); } }
為瞭節省篇幅,我就把重復出現的代碼刪除用…代替瞭,相信沒有影響大傢的觀看效果。
OK,現在整個主窗口都出來瞭。我們回顧一下本篇都做瞭什麼:一、整理瞭一下思路,按照記事本的功能和樣式,將組件才分出來分析瞭一下。二、對菜單欄進行初始化。三、對文本編輯區域進行初始化。
下面我們就要開始做事件響應瞭。
總結
到此這篇關於用JAVA寫文本編輯器的文章就介紹到這瞭,更多相關JAVA寫文本編輯器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!