最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你用JAVA寫文本編輯器(一)

 更新時(shí)間:2021年11月15日 16:03:58   作者:佐敦不下雨  
對(duì)于學(xué)習(xí)java編程的小伙伴們,常常需要編寫一個(gè)類似文本編輯器的東西,下面這篇文章主要給大家介紹了關(guān)于如何用JAVA寫文本編輯器的相關(guān)資料,需要的朋友可以參考下

前言

這里用swing ,awt寫的。

我們大概要做成一個(gè)電腦的記事本那樣的一個(gè)編輯器。可以調(diào)整字體,字號(hào),顏色。能夠打開、保存文件,新建窗口,點(diǎn)擊退出,還有一個(gè)關(guān)于介紹的窗口。整體看起來(lái)功能不是很多,只要一部分一部分的去完成就很好辦了。

思路分析:

一、首先我們的目標(biāo)模型就是電腦的記事本,打開編輯器可以看到結(jié)構(gòu):

1、標(biāo)題顯示在窗口的title。

2、下面一行是一個(gè)工具欄,里面有文件、編輯、格式、查看、幫助。這里我們就選文件、格式、幫助來(lái)做,大致的情況都差不多。

3、再下面就是一個(gè)屏占比超高的 TextArea了,他還有個(gè)特點(diǎn)是有滾動(dòng)條。

二、文件菜單欄:這里有新建窗口,打開文件,保存文件,還有一個(gè)退出按鈕。其中的難點(diǎn)主要在打開和保存文件上,為什么呢。因?yàn)槲覀凕c(diǎn)開打開和保存兩個(gè)按鈕,都會(huì)跳出一個(gè)文件選擇的Dialog。這東西是不是要自己畫,如果要自己畫,那就相當(dāng)麻煩了,要對(duì)磁盤進(jìn)行遍歷,然后貼到窗口中什么的。所幸我們有封裝好的工具JFileChooser。

三、格式菜單:彈出一個(gè)窗口,有文字的各種形式的屬性選擇,中間一個(gè)展示用的文本區(qū)域,下面兩個(gè)按鈕,確定即保存格式,修改主窗口的屬性。取消則關(guān)閉窗口,不改變屬性。

四、幫助菜單:這個(gè)是最簡(jiǎn)單的,因?yàn)橹挥幸粋€(gè)彈窗,用于顯示文本,所以我們打算從這里開始做。

OK,對(duì)每個(gè)部分分析了一下感覺清晰了很多。接下來(lái)我們來(lái)第一步,把主窗口畫出來(lái)。

具體實(shí)現(xiàn)

畫主窗口,并把菜單欄按照各自的關(guān)系建好:這里用到JMenuBar,JMenu、JMenuItem。顧名思義一個(gè)是菜單欄,一個(gè)是菜單,一個(gè)事菜單項(xiàng)。下面看代碼:

public class test5 extends JFrame{
 
	private JMenuBar menuBar;
	//菜單欄
	private JMenu menu_File,menu_Edit,menu_Help,menu_Format;
	//菜單欄內(nèi)的菜單
	private JMenuItem item_new,item_open,item_save,item_exit;
	//對(duì)于file菜單的子項(xiàng)
	private JMenuItem item_undo,item_cut,item_copy,item_stick,item_delete;
	//對(duì)于edit菜單的子項(xiàng)
	private JMenuItem item_about;
	//對(duì)于help菜單的子項(xiàng)
	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);
	}
	
	/**
	 * 對(duì)menubar進(jìn)行初始化,這里有一些小的快捷方式的設(shè)置
	 * 大家可以考慮對(duì)所有的組件都設(shè)置一下
	 * 兩種形式:
	 * menu_File.setMnemonic('f'); 對(duì)menu
	 * item_word_format.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,false)); 對(duì)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("復(fù)制");
		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("關(guān)于");
		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();
	}
}

接下來(lái)就是菜單欄下面的文本編輯區(qū)域了,這里只需要用一個(gè)JTextArea就可以了,別忘了還有滾動(dòng)條(JScrollPane):

public class test5 extends JFrame{
 
	...

 ...

 
	private static JTextArea edit_text_area;
	//private JTextArea edit_text_area;
	
	//編輯區(qū)域
	private JScrollPane scroll_bar;
	//可滾動(dòng)的pane 里面添加edit_text_area就可以變?yōu)橐粋€(gè)可以滾動(dòng)的文本框,JScrollPane是一個(gè)pane,同時(shí)可以設(shè)置方向
	
	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);
	}
	
	
	/**
	 * 初始化編輯區(qū)域
	 * 用scrollpane裝textarea
	 * 同時(shí)對(duì)pane設(shè)置方向
	 */
	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();
	}
	
	
 
}

為了節(jié)省篇幅,我就把重復(fù)出現(xiàn)的代碼刪除用...代替了,相信沒有影響大家的觀看效果。

OK,現(xiàn)在整個(gè)主窗口都出來(lái)了。我們回顧一下本篇都做了什么:一、整理了一下思路,按照記事本的功能和樣式,將組件才分出來(lái)分析了一下。二、對(duì)菜單欄進(jìn)行初始化。三、對(duì)文本編輯區(qū)域進(jìn)行初始化。

下面我們就要開始做事件響應(yīng)了。

總結(jié)

到此這篇關(guān)于用JAVA寫文本編輯器的文章就介紹到這了,更多相關(guān)JAVA寫文本編輯器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用easypoi快速導(dǎo)入導(dǎo)出的實(shí)現(xiàn)

    Java使用easypoi快速導(dǎo)入導(dǎo)出的實(shí)現(xiàn)

    這篇文章主要介紹了實(shí)現(xiàn)Java使用easypoi快速導(dǎo)入導(dǎo)出的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • mybatis?example如何自動(dòng)生成代碼?排序語(yǔ)句

    mybatis?example如何自動(dòng)生成代碼?排序語(yǔ)句

    這篇文章主要介紹了mybatis?example如何自動(dòng)生成代碼?排序語(yǔ)句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 基于UncategorizedSQLException異常處理方案

    基于UncategorizedSQLException異常處理方案

    這篇文章主要介紹了基于UncategorizedSQLException異常處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • spring boot實(shí)現(xiàn)軟刪除的示例代碼

    spring boot實(shí)現(xiàn)軟刪除的示例代碼

    這篇文章主要介紹了spring boot實(shí)現(xiàn)軟刪除的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 劍指Offer之Java算法習(xí)題精講鏈表與二叉樹專項(xiàng)訓(xùn)練

    劍指Offer之Java算法習(xí)題精講鏈表與二叉樹專項(xiàng)訓(xùn)練

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • Java中四種線程池的使用示例詳解

    Java中四種線程池的使用示例詳解

    這篇文章主要給大家介紹了關(guān)于Java中四種線程池的使用方法,四種線程池分別包括FixedThreadPool、CachedThreadPool、ScheduledThreadPool以及SingleThreadExecutor,文中給出了詳細(xì)的示例代碼供大家參考,需要的朋友們下面來(lái)一起看看吧。
    2017-08-08
  • Springboot框架實(shí)現(xiàn)自動(dòng)裝配詳解

    Springboot框架實(shí)現(xiàn)自動(dòng)裝配詳解

    在使用springboot時(shí),很多配置我們都沒有做,都是springboot在幫我們完成,這很大一部分歸功于springboot自動(dòng)裝配。本文將詳細(xì)為大家講解SpringBoot的自動(dòng)裝配原理,需要的可以參考一下
    2022-08-08
  • java實(shí)現(xiàn)給出分?jǐn)?shù)數(shù)組得到對(duì)應(yīng)名次數(shù)組的方法

    java實(shí)現(xiàn)給出分?jǐn)?shù)數(shù)組得到對(duì)應(yīng)名次數(shù)組的方法

    這篇文章主要介紹了java實(shí)現(xiàn)給出分?jǐn)?shù)數(shù)組得到對(duì)應(yīng)名次數(shù)組的方法,涉及java針對(duì)數(shù)組的遍歷、排序及運(yùn)算的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Mybatis自定義類型轉(zhuǎn)換器的使用技巧

    Mybatis自定義類型轉(zhuǎn)換器的使用技巧

    這篇文章主要介紹了Mybatis自定義類型轉(zhuǎn)換器的使用技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringMVC之簡(jiǎn)單的增刪改查示例(SSM整合)

    SpringMVC之簡(jiǎn)單的增刪改查示例(SSM整合)

    本篇文章主要介紹了SpringMVC之簡(jiǎn)單的增刪改查示例(SSM整合),這個(gè)例子是基于SpringMVC+Spring+Mybatis實(shí)現(xiàn)的。有興趣的可以了解一下。
    2017-03-03

最新評(píng)論

隆化县| 衡南县| 双牌县| 库伦旗| 陇南市| 体育| 鲁甸县| 公安县| 永兴县| 瓦房店市| 栾城县| 平乐县| 金川县| 玛沁县| 三明市| 商洛市| 静安区| 汉寿县| 且末县| 宜兰市| 湖口县| 洛宁县| 栖霞市| 桑植县| 金乡县| 安康市| 德昌县| 汤阴县| 西丰县| 兴隆县| 瑞丽市| 钟山县| 五河县| 曲阳县| 罗山县| 平谷区| 揭阳市| 信阳市| 淄博市| 凌源市| 红安县|