導入Java . awt . event . *;
導入Java . io . *;
公共類Notepad/*實現ActionListener、MouseListener、MouseMotionListener、WindowListener、ItemListener、KeyListener、TextListener */
{
//成員變量
私有框架主機;//主框架
私有菜單欄MB;//菜單欄
私人菜單mFile,mEdit,mFormat,mHelp//菜單:文件、編輯、格式、幫助
private MenuItem miNew、miOpen、miSave、miSaveAs、miExit//文件菜單項:新建、打開、保存、另存為、退出。
私人菜單miCut,miCopy,miPaste,miDelete//編輯菜單項:剪切、復制、粘貼、刪除。
private MenuItem miFont、miLowtoCapital、miCapitaltoLow、miEncrypt、miDisencrypt//格式菜單項:字體
private MenuItem miAboutNotepad//幫助菜單項:關於記事本
私有TextArea ta//文本區域
私有字符串tempString//臨時字符串,用於存儲要復制粘貼的字符串。
private boolean textvalue changed = false;
private int id _ font//字體
字符串文件名= " ";//上次保存後的文件名和地址。
//構造函數
公共記事本(){
//框架
大型機=新框架(“記事本v0.99通過啟動”);
MB = new MenuBar();
ta = new TextArea (30,60);
ta.setFont(新字體(“Times New Rome”,字體。平原,15));
ta.setBackground(新顏色(0,250,200));
//菜單欄
mFile =新菜單(“文件”);
mEdit =新菜單(“編輯”);
mFormat =新菜單(“格式”);
mHelp =新菜單(" Help ");
//"文件"
miNew = New MenuItem(" New ");
miOpen = new MenuItem(" Open ");
miSave = new MenuItem(" Save ");
miSaveAs = new MenuItem("另存為");
mi Exit = new MenuItem(" Exit ");
//"編輯"
miCut = new MenuItem(" Cut ");
mi Copy = new MenuItem(" Copy ");
mi Paste = new MenuItem(" Paste ");
miDelete = new MenuItem(" Delete ");
//"格式"
mi Font = new MenuItem(" Font ");
miLowtoCapital = new MenuItem(" Low to Capital ");
miCapitaltoLow = new MenuItem(" Capital to Low ");
miEncrypt = new MenuItem(" Encrypt ");
midi sencrypt = new MenuItem(" discrypt ");
//"幫助"
miAboutNotepad = new MenuItem("關於記事本");
//添加文件菜單項
mfile . add(miNew);
mfile . add(miOpen);
mfile . add(miSave);
mfile . add(miSaveAs);
mfile . add(miExit);
//添加編輯菜單項
medit . add(miCut);
medit . add(miCopy);
medit . add(mi paste);
medit . add(miDelete);
//添加格式菜單項
m format . add(mi font);
m format . add(miLowtoCapital);
m format . add(miCapitaltoLow);
m format . add(miEncrypt);
m format . add(midi sencrypt);
//添加幫助菜單項
mhelp . add(miAboutNotepad);
//菜單欄添加菜單
MB . add(mFile);
MB . add(mEdit);
MB . add(m format);
MB . add(mHelp);
//框架添加菜單欄
mainframe . setmenubar(MB);
//初始字符串為空。
tempString =
//添加文本區域
mainFrame.add(ta,BorderLayout。中心);
mainFrame.setSize(800,500);
mainframe . set location(100,100);//起始位置
mainframe . setresizable(true);//無法更改大小。
mainframe . set visible(true);
//大型機. pack();
//////////////////////////////////////////////////////////////////////////////////
///////////////////////////添加壹個監視器。
//////////////////////////////////////////////////////////////////////////////////
//主框架
mainframe . addwindowlistener(newwindowadapter()){//關閉窗口。
public void window closing(window event e){
system . exit(0);
}
});
//文本區域
ta . addkey listener(new key adapter(){
公共void鍵入的(KeyEvent e){
textValueChanged = true//按下鍵盤鍵將導致文本被修改。
}
});
////////////“文件”菜單:////////////////////////
//新建
minew . addactionlistener(new action listener(){
public void action performed(action event e){
ta.replaceRange(",0,ta.getText()。length());//清除文本區域的內容。
文件名= " ";//文件名為空
}
});
//打開
miOpen.addActionListener(新的ActionListener(){
public void action performed(action event e){
FileDialog d=new FileDialog(大型機,“打開文件”,FileDialog。負載);//打開文件對話框
d . addwindowlistener(newwindowadapter(){//關閉文件對話窗口。
public void window closing(window event ee){
system . exit(0);
}
});
d . set visible(true);
File f = new File(d . get directory()+d . getfile());//創建新文件
fileName = d . get directory()+d . getfile();//獲取文件名
char ch[]= new char[(int)f . length()];///用這個文件的長度創建壹個字符數組。
嘗試//異常處理
{
//讀取數據並存儲在字符數組ch中。
buffered reader bw = new buffered reader(new file reader(f));
bw . read(ch);
bw . close();
}
catch(file not found exception Fe){
System.out.println("找不到文件");
system . exit(0);
}
catch( IOException ie){
System.out.println("IO錯誤");
system . exit(0);
}
String s =新字符串(ch);
ta.setText//將文本區域設置為打開文件的內容。
}
});
//保存
miSave.addActionListener(新的ActionListener(){
public void action performed(action event e){
If(filename . equals(" "){//如果文件尚未保存,則文件名為空。
FileDialog d=new FileDialog(大型機,“保存文件”,FileDialog。保存);//保存文件對話框
d . addwindowlistener(newwindowadapter(){//關閉文件對話窗口。
public void window closing(window event ee){
system . exit(0);
}
});
d . set visible(true);
string s = ta . gettext();//獲取輸入文本內容
嘗試//異常處理
{
File f = new File(d . get directory()+d . getfile());//創建新文件
fileName = d . get directory()+d . getfile();//獲取文件名
buffered writer bw = new buffered writer(new file writer(f));//進入文件
bw.write(s,0,s . length());
bw . close();
}
catch(file not found exception Fe _){
System.out.println("找不到文件");
system . exit(0);
}
捕捉(IOException ie_)
{
System.out.println(" IO錯誤");
system . exit(0);
}
}
否則//如果文件已經保存。
{
string s = ta . gettext();//獲取輸入文本內容
嘗試//異常處理
{
File f =新文件(文件名);//創建新文件
buffered writer bw = new buffered writer(new file writer(f));//進入文件
bw.write(s,0,s . length());
bw . close();
}
catch(file not found exception Fe _){
System.out.println("找不到文件");
system . exit(0);
}
捕捉(IOException ie_)
{
System.out.println(" IO錯誤");
system . exit(0);
}
}
}
});
//另存為
misaveas . addactionlistener(new action listener(){
public void action performed(action event e){
FileDialog d=new FileDialog(大型機,“保存文件”,FileDialog。保存);//保存文件對話框
d . addwindowlistener(newwindowadapter(){//關閉文件對話窗口。
public void window closing(window event ee){
system . exit(0);
}
});
d . set visible(true);
string s = ta . gettext();//獲取輸入文本內容
嘗試//異常處理
{
File f = new File(d . get directory()+d . getfile());//創建新文件
buffered writer bw = new buffered writer(new file writer(f));//進入文件
bw.write(s,0,s . length());
bw . close();
}
catch(file not found exception Fe _){
System.out.println("找不到文件");
system . exit(0);
}
捕捉(IOException ie_)
{
System.out.println(" IO錯誤");
system . exit(0);
}
}
});
//退出
mi exit . addactionlistener(new action listener(){///退出程序。
public void action performed(action event e){
system . exit(0);
}
});
/////////////“編輯”菜單:////////////////////////
//剪切
micut . addactionlistener(new action listener(){
public void action performed(action event e){
tempString = ta . getselectedtext();///獲取要復制的內容,臨時存儲在tempString中。
string buffer tmp = new string buffer(ta . gettext());//臨時存儲文本
int start = ta . getselectionstart();//獲取要刪除的字符串的起始位置。
int len = ta.getSelectedText()。長度();//獲取要刪除的字符串的長度。
tmp.delete( start,start+len);///刪除選定的字符串
ta . settext(tmp . tostring());//用新文本設置原始文本
}
});
//復制
miCopy.addActionListener(新的ActionListener(){
public void action performed(action event e){
tempString = ta . getselectedtext();///獲取要復制的內容,臨時存儲在tempString中。
}
});
//粘貼
miPaste.addActionListener(新ActionListener(){
public void action performed(action event e){
string buffer tmp = new string buffer(ta . gettext());//臨時存儲文本
int start = ta . getselectionstart();//獲取要粘貼的位置。
tmp.insert(start,tempString);//簽入要粘貼的內容。
ta . settext(tmp . tostring());//用新文本設置原始文本
}
});
//刪除
miDelete.addActionListener(新ActionListener(){
public void action performed(action event e){
string buffer tmp = new string buffer(ta . gettext());//臨時存儲文本
int start = ta . getselectionstart();//獲取要刪除的字符串的起始位置。
int len = ta.getSelectedText()。長度();//獲取要刪除的字符串的長度。
tmp.delete( start,start+len);///刪除選定的字符串
ta . settext(tmp . tostring());//用新文本設置原始文本
}
});
////////////“格式”菜單:///////////////////////////////////
//字體
miFont.addActionListener(新ActionListener(){
public void action performed(action event e){
最終對話框d =新對話框(主機,“字體”);//新建對話框
d.setLocation( 250,250);//起始位置
d . set layout(new BorderLayout());//表格布局
/////////////上部面板。
Label l _ font = new Label(" font ");//字體標簽
Panel p _ 1 = new Panel();
p _ 1 . add(l _ font);
p _ 1 . set visible(true);
/////////////中的壹些面板。
List font_list = new List (6,false);//字體列表
//添加字體項
font _ list . add(" Plain ");///普通字體
font _ list . add(" Bold ");///粗體
font _ list . add(" Italic ");//斜體
font _ list . additem listener(new myitem listener _ font());//字體增加監視器
Panel p2 = new Panel();
p _ 2 . add(font _ list);
p _ 2 . set visible(true);
///////////////下面板。
按鈕ok =新建按鈕(“OK”);
ok.addActionListener(新ActionListener(){
public void action performed(action event e){
d . dispose();
}
});
ok.setSize(新維度(20,5));
Panel P3 = new Panel();//下部面板
p _ 3 . add(ok);
p _ 3 . set visible(true);
//添加三個面板
d.add(p_1,BorderLayout。北);
d.add(p_2,BorderLayout。中心);
d.add(p_3,BorderLayout。南);
d . pack();
d . addwindowlistener(newwindowadapter(){//關閉對話框窗口。
public void window closing(window event ee){
d . dispose();
}
});
d . set visible(true);
}
});
//將小寫字母轉換成大寫字母
milowtocapital . addactionlistener(新ActionListener(){
public void action performed(action event e){
string s = ta . gettext();//獲取輸入文本內容
string buffer temp = new string buffer(" ");
for(int I = 0;我& lts.length()。i++){
if((int)s.charAt(i)>= 97 & amp& amp(int)s . charat(I)& lt;=122 ){
temp . append((char)((int)s . charat(I)-32));
}
其他
temp.append(s.charAt(i))。
}
s =新字符串(temp);
ta.setText
}
});
//大寫字母轉換成小寫字母
micapitaltolow . addactionlistener(new action listener(){
public void action performed(action event e){
string s = ta . gettext();//獲取輸入文本內容
string buffer temp = new string buffer(" ");
for(int I = 0;我& lts.length()。i++){
if((int)s.charAt(i)>= 65 & amp& amp(int)s . charat(I)& lt;=90 ){
temp . append((char)((int)s . charat(I)+32));
}
其他
temp.append(s.charAt(i))。
}
s =新字符串(temp);
ta.setText
}
});
//加密
miencrypt . addactionlistener(new action listener(){
public void action performed(action event e){
string s = ta . gettext();//獲取輸入文本內容
string buffer temp = new string buffer(" ");
for(int I = 0;我& lts.length()。i++){
if(s.charAt(i)>= 40 & amp& amps . charat(I)& lt;=125){
if(i%2==0){
temp . append((char)(s . charat(I)+1));
}
其他
temp . append((char)(s . charat(I)-1));
}
其他
temp.append(s.charAt(i))。
}
s =新字符串(temp);
ta.setText
}
});
//解密
miDisencrypt.addActionListener(新ActionListener(){
public void action performed(action event e){
string s = ta . gettext();//獲取輸入文本內容
string buffer temp = new string buffer(" ");
for(int I = 0;我& lts.length()。i++){
if(s.charAt(i)>= 40 & amp& amps . charat(I)& lt;=125){
if(i%2==0){
temp . append((char)(s . charat(I)-1));
}
其他
temp . append((char)(s . charat(I)+1));
}
其他
temp.append(s.charAt(i))。
}
s =新字符串(temp);
ta.setText
}
});
////////////“幫助”菜單:////////////////////////////
//關於記事本
miaboutnotepad . addactionlistener(新ActionListener(){
public void action performed(action event e){
最終對話框d =新對話框(主機,“關於記事本”);//新建對話框
TextArea t = new TextArea(" \ n歡迎使用記事本"+" \ n \ n "+" Copyright @ Launching "+" \ n \ n "+"自由軟件"+" \ n \ n "+" v 0.99 ");//添加標簽
t.setSize(新維度(5,5));
t . set editable(false);
d . setresizable(false);//不可調整大小
d .添加(t);
d . pack();
d . addwindowlistener(newwindowadapter(){//關閉對話框窗口。
public void window closing(window event ee){
d . dispose();
}
});
d.setLocation( 100,250);//起始位置
d . set visible(true);
}
});
}
Classmyitemlistener _實現itemlistener {//font listener
public void itemStateChanged(item event e){
id _ font =((Java . awt . list)e . getsource())。getSelectedIndex();
開關(id_font){
案例0:{
ta.setFont(新字體(“Times New Roman”,字體。PLAIN,ta.getFont()。getSize()));//純文本
打破;
}
案例1:{
ta.setFont(新字體(“Times New Roman”,字體。BOLD,ta.getFont()。getSize()));//粗體文本
打破;
}
案例2:{
ta.setFont(新字體(“Times New Roman”,字體。ITALIC,ta.getFont()。getSize()));//斜體文本
打破;
}
}
}
}
/////////////////////////////////////////////////////////////////////-主函數。
公共靜態void main(String arg[]){
記事本測試=新記事本();///創建記事本
}
//////////////////////////////////////////////////////////////////////////////////////////////////
}