利用Java來制作仿Windows記事本

由于期末降至,每年的學校的實訓也開始了募谎,實訓當然不是每天工地搬磚胺龉亍!

嗯数冬,今年的實訓是利用Java去制作各種各樣的東西节槐,有仿Windows記事本搀庶,有網頁瀏覽器制作,有日歷記事本铜异,還有連連看游戲制作哥倔,嗯,當然不是全部都做啊揍庄,那就來不及了咆蒿,畢竟學校也是有時間限制的,就三四天時間蚂子。我的話沃测,抽到的題目是Windows記事本的制作!食茎!

額蒂破,順便說一句,寒假里我要是有空的話别渔,我會繼續(xù)更的附迷,把各種瀏覽器連連看的也都做一遍,把代碼都發(fā)上來钠糊,希望我時間足夠吧挟秤。

哦,對了抄伍,我之后寫的文章里的代碼都是簡化后的,完整代碼管宵,我會在最后附上鏈接截珍。

好了好了,廢話到此結束箩朴。

=============我是一根正經的分割線==============

制作記事本岗喉,嗯,可以分為五個步驟:

記事本制作步驟流程圖

首先的話炸庞,界面的制作:

自己想好自己要做什么樣子的記事本钱床,我就直接想好了,自己大概制作什么樣子的記事本:


效果圖

嗯埠居,想好自己要做成什么樣子的話查牌,接下來就簡單了。

先設置個我們要的這個界面:

private NotePadFrame f;

布局設計滥壕,首先新建一個菜單欄纸颜,滾動條,以及一個文本框绎橘,以及用來給予提示的幫助欄胁孙。

private JMenuBar menuBar;

private JTextArea jTextArea; //文本區(qū)域

private JScrollPane jScrollPane; //滾動條

private JLabel statusLabel;

然后,新建菜單欄中的各種按鈕菜單以及子菜單:

private JMenu fileMenu; //文件菜單

private JMenu editMenu; //編輯菜單

private JMenu formatMenu; //格式菜單

private JMenu viewMenu; //查看菜單

private JMenu helpMenu; //幫助菜單

private JMenuItem openItem, closeItem, saveItem,aboutItem;

private JMenuItem newItem, savetoItem; //新建項目,另存為項目

//編輯菜單中的所有項目

private JMenuItem editUndo, editCut, editCopy, editPaste, editDelete, editFind, editFindnext, editReplace, editGoto, editAll, editDates;

//格式菜單下的項目

private JMenuItem formatFont; //字體

private JCheckBoxMenuItem formatLinewrap; //自動換行

//查看菜單下的項目

private JCheckBoxMenuItem Status;

嗯涮较,所有的子菜單都新建了稠鼻,然后就是初始化:

JFrame frame = new JFrame("Wangha's Text"); //建立一個名為記事本·偽的窗口

frame.setBounds(300, 300, 700, 450); //窗口位置在300,300狂票,窗口大小為700*450

frame.setDefaultCloseOperation(EXIT_ON_CLOSE); //

menuBar = new JMenuBar(); //初始化菜單欄

jTextArea = new JTextArea(10, 40); //10行40列

Font x = new Font("Monospaced",1,20); //定義字體大小以及一些屬性

jTextArea.setFont(x); //只能使用x這種字體

jTextArea.setLineWrap(true);//到達指定寬度則換行

//應當首先利用構造函數指定JScrollPane的控制對象候齿,此處為JTextArea,然后再講JScrollPane

jScrollPane = new JScrollPane(jTextArea); //將滾動條添加進面板

//設置滾動條自動出現(xiàn)

jScrollPane.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); //水平

jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); //豎直

jScrollPane.setViewportView(jTextArea);

jTextArea.getDocument().addUndoableEditListener(undo);

嗯苫亦。毛肋。。屋剑。本來的話润匙,還有一大堆初始化,但是考慮到太長了唉匾,所以我就把一些都簡化了孕讳,一些關鍵的語句繼續(xù)留著,這一大堆都初始化完了巍膘,就可以進行下一步了厂财,將按鈕利用add()函數,把菜單逐漸添加進入各個更上一層的菜單或者界面峡懈。比如:

editMenu.add(editFind);

嗯璃饱,將所有按鈕都已經初始化了,那么肪康,就需要給所有按鈕添加事件了荚恶,添加事件的話,代碼就可長了磷支,我就簡單的給一個退出界面的事件吧谒撼。詳細的話,還是看我最后給的鏈接吧雾狈。

closeItem.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

});

嗯廓潜,幾乎所有的事件都能按照這個格式寫。

用這個格式的好處就是善榛,不必在初始化中設置:closeItem.addActionListener(this);

監(jiān)視器設置完了辩蛋,接下去就是寫事件了,寫事件簡直太長了锭弊,起碼有五百行堪澎。。味滞。

嗯樱蛤,所以钮呀,以下的所有的一些大家自己在寫的時候容易落下或者容易忽略的一些代碼:

首先是剪切板的:

//系統(tǒng)剪切板調用

Toolkit toolkit=Toolkit.getDefaultToolkit();

Clipboard clipBoard=toolkit.getSystemClipboard();

然后是撤銷操作中的一些代碼:

protected UndoManager undo=new UndoManager();

protected UndoableEditListener undoHandler=new UndoHandler();

class UndoHandler implements UndoableEditListener

{ public void undoableEditHappened(UndoableEditEvent uee)

{ undo.addEdit(uee.getEdit());

}

}

public void removeUpdate(DocumentEvent e)

{ editUndo.setEnabled(true);

}

public void insertUpdate(DocumentEvent e)

{ editUndo.setEnabled(true);

}

public void changedUpdate(DocumentEvent e)

{ editUndo.setEnabled(true);

}//DocumentListener結束

jTextArea.addUndoableEditListener(undo);

還有在查找頁面上的查找(最重要的實現(xiàn)功能的幾句話):

if(jTextArea.getSelectedText()==null)

k=strA.indexOf(strB,jTextArea.getCaretPosition()+1);//index 返回第一個索引的位置,從這個位置開始搜索

else

k=strA.indexOf(strB, jTextArea.getCaretPosition()-findText.getText().length()+1);

if(k>-1)

{ //String strData=strA.subString(k,strB.getText().length()+1);

jTextArea.setCaretPosition(k);

jTextArea.select(k,k+strB.length());

以上就是所有了昨凡,最后的話爽醋,代碼位置在這里!1慵埂蚂四!我寫的另外一篇!D奶怠遂赠!

http://blog.csdn.net/wangha_1/article/details/78937248

我的另外一篇作品

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市晌杰,隨后出現(xiàn)的幾起案子跷睦,更是在濱河造成了極大的恐慌,老刑警劉巖肋演,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抑诸,死亡現(xiàn)場離奇詭異,居然都是意外死亡爹殊,警方通過查閱死者的電腦和手機蜕乡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梗夸,“玉大人层玲,你說我怎么就攤上這事》粗ⅲ” “怎么了称簿?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惰帽。 經常有香客問我,道長父虑,這世上最難降的妖魔是什么该酗? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮士嚎,結果婚禮上呜魄,老公的妹妹穿的比我還像新娘。我一直安慰自己莱衩,他們只是感情好爵嗅,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笨蚁,像睡著了一般睹晒。 火紅的嫁衣襯著肌膚如雪趟庄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天伪很,我揣著相機與錄音戚啥,去河邊找鬼。 笑死锉试,一個胖子當著我的面吹牛猫十,可吹牛的內容都是我干的。 我是一名探鬼主播呆盖,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拖云,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了应又?” 一聲冷哼從身側響起宙项,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丁频,沒想到半個月后杉允,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡席里,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年叔磷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奖磁。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡改基,死狀恐怖,靈堂內的尸體忽然破棺而出咖为,到底是詐尸還是另有隱情秕狰,我是刑警寧澤躁染,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布吞彤,位于F島的核電站,受9級特大地震影響挠羔,放射性物質發(fā)生泄漏。R本人自食惡果不足惜破加,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一范舀、第九天 我趴在偏房一處隱蔽的房頂上張望吝羞。 院中可真熱鬧蔽莱,春花似錦、人聲如沸荔烧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至三痰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稚机,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留常熙,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓裸卫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诅蝶。 傳聞我的和親對象是個殘疾皇子募壕,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容

  • 記事本程序展示結果圖: 1.建立了一個類Notepad extends JFrame implements Act...
    可樂W閱讀 1,792評論 0 0
  • /** 記事本程序* 編寫時間:2010.3.12*/import java.awt.BorderLayout;i...
    霙愔閱讀 556評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)代嗤,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 從三月份找實習到現(xiàn)在宜猜,面了一些公司硝逢,掛了不少,但最終還是拿到小米渠鸽、百度、阿里徽缚、京東、新浪排宰、CVTE那婉、樂視家的研發(fā)崗...
    時芥藍閱讀 42,243評論 11 349
  • 傳送門 解讀阿里Java開發(fā)手冊(v1.1.1) - 異常日志 前言 阿里Java開發(fā)手冊談不上圣經吧恃,但確實是大量...
    kelgon閱讀 4,364評論 4 50