⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsb.java

📁 程序的功能与微软的记事本功能差不多
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

 
/*文摘分类>> 商务开发  | 阅读次数>> 507  | 推荐人数>> 0  | 整理日期>> 2004-12-25
 
用Java编写的记事本程序

--------------------------------------------------------------------------------

这个学期,我们学习了Java编程,期末之时老师要我们编个记事本作为这门课程的课程设计,我写了一个,大体上的功能都实现了,只有"撤销"的功能没有实现,请各位大虾指点一下,“撤销”的算法,不甚感激! 
特将记事本的源码附下,请大家指点,看还有没有更简洁高效的算法,请不要吝啬,我的E-mail:yangyong@ccsu.cn,欢迎大家来信指点! 

*/
/* 
* 
*题目:记事本程序 
*Author: Jeason 
* 
* 2004-12-20 
* 
**/ 
package jeason; 

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.io.*; 
import java.util.*; 
import java.text.*; 

public class Jsb{ 

/// 
boolean dirty=true; 
String filename=""; 
String strtext=""; 


/////////////////////////////////// 
////////// Menu //////////////// 
/////////////////////// 

JFrame frame=new JFrame("我的记事本"); 
JPopupMenu pop=new JPopupMenu("弹出"); 
JTextArea text=new JTextArea(); 
JLabel statubar=new JLabel("状态栏"); 
JMenuBar Mbar=new JMenuBar(); 
JFileChooser jFileChooser1=new JFileChooser(); 

JColorChooser jColor=new JColorChooser(); 

JMenu jFile=new JMenu("文件"); 
JMenu jEdit=new JMenu("编辑"); 
JMenu jFormat=new JMenu("格式"); 
JMenu jHelp=new JMenu("帮助"); 

JMenuItem jnew=new JMenuItem("新建(N)"); 

public Jsb(){ ///无参数的构造函数 

/// 
this.dirty=false; 
///// 



final BorderLayout borderLayout1=new BorderLayout(); 

frame.setSize(600,500);// 
frame.addWindowListener(new Jsb_frame_closingAdapter(this)); 

JPanel panel=new JPanel(); 
panel.setLayout(borderLayout1);//布局 
panel.add(new JScrollPane(text));//滚动条 
panel.add(statubar,borderLayout1.SOUTH); 


frame.getContentPane().add(panel); 
// 
frame.setJMenuBar(Mbar); //将主菜单添加到窗体中 





/* 
* jnew 
**/ 
//jnew 
jnew.addActionListener(new File_new_actionAdapter(this)); 
jnew.setMnemonic('N');//N上下划线 
jnew.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK,true)); 
//快捷方式 
//d

/* 
* jopen 
**/ 
JMenuItem jopen=new JMenuItem("打开(O)");//jopen 
jopen.addActionListener(new File_open_actionAdapter(this)); 
jopen.setMnemonic('O'); 
//jopen.setAccelerator(KeyStroke.getKeyStroke('O'),java.awt.Event.CTRL_MASK,true); 

/* 
* jsave 
**/ 
JMenuItem jsave=new JMenuItem("保存(S)"); 
jsave.addActionListener(new File_save_actionAdapter(this)); 
jsave.setMnemonic('S'); 
//jsave.setAccelerator(KeyStroke.getKeyStroke('S'),java.awt.Event.CTRL_MASK,true); 


/* 
* jsave as 
**/ 
JMenuItem jsaveas=new JMenuItem("另存为..."); 
jsaveas.addActionListener(new File_saveas_actionAdapter(this)); 
/* 
* jquite 
**/ 

JMenuItem jquite=new JMenuItem("关闭(Q)"); 
jquite.addActionListener(new File_quite_actionAdapter(this)); 
jquite.setMnemonic('Q'); 
jquite.setAccelerator(KeyStroke.getKeyStroke('Q',java.awt.Event.CTRL_MASK,true)); 



//------------------------------------ 
// jFile code of end 
//-------------------------------------- 

/** 
* jEdit code 
*/ 
//jundo 
JMenuItem jundo=new JMenuItem("撤销(U)"); 
jundo.addActionListener(new Edit_undo_actionAdapter(this)); 
jundo.setMnemonic('U'); 
jundo.setAccelerator(KeyStroke.getKeyStroke('U',java.awt.Event.CTRL_MASK,true)); 

/* 
* jcut 
**/ 
JMenuItem jcut=new JMenuItem("剪切(X)"); 
jcut.addActionListener(new Edit_cut_actionAdapter(this)); 
jcut.setMnemonic('X'); 
jcut.setAccelerator(KeyStroke.getKeyStroke('X',java.awt.Event.CTRL_MASK,true)); 

/* 
* jcopy 
**/ 
JMenuItem jcopy=new JMenuItem("复制(C)"); 
jcopy.addActionListener(new Edit_copy_actionAdapter(this)); 
jcopy.setMnemonic('C'); 
jcopy.setAccelerator(KeyStroke.getKeyStroke('C',java.awt.Event.CTRL_MASK,true)); 

/* 
* jpaste 
**/ 
JMenuItem jpaste=new JMenuItem("粘贴(V)"); 
jpaste.addActionListener(new Edit_paste_actionAdapter(this)); 
jpaste.setMnemonic('V'); 
jpaste.setAccelerator(KeyStroke.getKeyStroke('V',java.awt.Event.CTRL_MASK,true)); 

/* 
* jdelete 
**/ 
JMenuItem jdelete=new JMenuItem("删除(D)"); 
jdelete.addActionListener(new Edit_delete_actionAdapter(this)); 
jdelete.setMnemonic('D'); 
jdelete.setAccelerator(KeyStroke.getKeyStroke('D',java.awt.Event.CTRL_MASK,true)); 

/* 
* jfind 
**/ 
JMenuItem jfind=new JMenuItem("查找(F)"); 
jfind.addActionListener(new Edit_find_actionAdapter(this)); 
jfind.setMnemonic('F'); 
jfind.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,true)); 

/* 
* jreplace 
**/ 
JMenuItem jreplace=new JMenuItem("替换(R)"); 
jreplace.addActionListener(new Edit_replace_actionAdapter(this)); 
jreplace.setMnemonic('R'); 
jreplace.setAccelerator(KeyStroke.getKeyStroke('R',java.awt.Event.CTRL_MASK,true)); 

/* 
*jselectall 
**/ 
JMenuItem jselectall=new JMenuItem("全选(A)"); 
jselectall.addActionListener(new Edit_selectall_actionAdapter(this)); 
jselectall.setMnemonic('A'); 
jselectall.setAccelerator(KeyStroke.getKeyStroke('A',java.awt.Event.CTRL_MASK,true)); 

/* 
* jdate 
**/ 
JMenuItem jdate=new JMenuItem("日期/时间(T)"); 
jdate.addActionListener(new Edit_timedate_actionAdapter(this)); 
jdate.setMnemonic('T'); 
jdate.setAccelerator(KeyStroke.getKeyStroke('T',java.awt.Event.CTRL_MASK,true)); 




//------------------------------ 
// jEdit code of end 
// 
//----------------------------- 

/* 
* jword 
**/ 
JMenuItem jword=new JMenuItem("自动换行"); 
jword.addActionListener(new Format_word_actionAdapter(this)); 

/* 
* jfont 
**/ 
JMenuItem jfont=new JMenuItem("字体.."); 
jfont.addActionListener(new Format_font_actionAdapter(this)); 

/* 
* jcolor 
**/ 
JMenuItem jcolor=new JMenuItem("颜色..."); 
jcolor.addActionListener(new Format_color_actionAdapter(this)); 



//-------------------------------------------------- 
// jFormat code of end 
//-------------------------------------------------- 

/* 
* jabout 
**/ 
JMenuItem jabout=new JMenuItem("关于作者(A)"); 
jabout.addActionListener(new Help_about_actionAdapter(this)); 
jabout.setMnemonic('A'); 
jabout.setAccelerator(KeyStroke.getKeyStroke('A',java.awt.Event.CTRL_MASK,true)); 



//------------------------------------------------- 
// jHelp code of end 
//------------------------------------------------------ 

/************************************************* 
*------------------------------------------------ 
* PopupMenuItem 
*------------------------------------------------ 
*************************************************/ 
/* 
* pundo 
**/ 
JMenuItem pundo=new JMenuItem("撤销(U)"); 
pundo.addActionListener(new Pop_undo_actionAdapter(this)); 
pundo.setMnemonic('U'); 
pundo.setAccelerator(KeyStroke.getKeyStroke('U',java.awt.Event.CTRL_MASK,true)); 

/* 
* pcut 
**/ 
JMenuItem pcut=new JMenuItem("剪切(X)"); 
pcut.addActionListener(new Pop_cut_actionAdapter(this)); 
pcut.setMnemonic('X'); 
pcut.setAccelerator(KeyStroke.getKeyStroke('X',java.awt.Event.CTRL_MASK,true)); 

/* 
* pcopy 
**/ 
JMenuItem pcopy=new JMenuItem("复制(C)"); 
pcopy.addActionListener(new Pop_copy_actionAdapter(this)); 
pcopy.setMnemonic('C'); 
pcopy.setAccelerator(KeyStroke.getKeyStroke('C',java.awt.Event.CTRL_MASK,true)); 

/* 
* ppaste 
**/ 
JMenuItem ppaste=new JMenuItem("粘贴(V)"); 
ppaste.addActionListener(new Pop_paste_actionAdapter(this)); 
ppaste.setMnemonic('V'); 
ppaste.setAccelerator(KeyStroke.getKeyStroke('V',java.awt.Event.CTRL_MASK,true)); 

/* 
*pdelete 
**/ 
JMenuItem pdelete=new JMenuItem("删除(D)"); 
pdelete.addActionListener(new Pop_delete_actionAdapter(this)); 
pdelete.setMnemonic('D'); 
pdelete.setAccelerator(KeyStroke.getKeyStroke('D',java.awt.Event.CTRL_MASK,true)); 




//////// 
///////////// text//////////////////////////////////////// 
text.setDoubleBuffered(false); 
text.setToolTipText("杨勇的记事本"); 
text.setVerifyInputWhenFocusTarget(true); 
text.setText(""); 

text.addCaretListener(new Jsb_text_caretAdapter(this)); 
text.addMouseListener(new Jsb_text_mouseAdapter(this)); 
text.addAncestorListener(new Jsb_text_ancestorAdapter(this)); 

////////////////////////////////////////////////////////// 
Mbar.add(jFile); 
Mbar.add(jEdit); 
Mbar.add(jFormat); 
Mbar.add(jHelp); 

jFile.add(jnew); 
jFile.add(jopen); 
jFile.addSeparator(); 
jFile.add(jsave); 
jFile.add(jsaveas); 
jFile.addSeparator(); 
jFile.add(jquite); 

jEdit.add(jundo); 
jEdit.addSeparator(); 
jEdit.add(jcut); 
jEdit.add(jcopy); 
jEdit.add(jpaste); 
jEdit.add(jdelete); 
jEdit.addSeparator(); 
jEdit.add(jfind); 
jEdit.add(jreplace); 
jEdit.addSeparator(); 
jEdit.add(jselectall); 
jEdit.add(jdate); 

jFormat.add(jword); 
jFormat.addSeparator(); 
jFormat.add(jfont); 
jFormat.addSeparator(); 
jFormat.add(jcolor); 

jHelp.add(jabout); 

pop.add(pundo); 
pop.addSeparator(); 
pop.add(pcut); 
pop.add(pcopy); 
pop.add(ppaste); 
pop.add(pdelete); 

frame.setVisible(true); 



} 
/************************************************************ 
//////////////////////Event///////////////////////////////// 
**************************************************************/ 

public void frame_windowclose_windowClosing(WindowListener e){ 
this.close(); 
} 
///////////////////////////////////////////////////////// 
public void text_mouseClicked(MouseEvent e){ 
if(e.getModifiers()==InputEvent.BUTTON3_MASK){ 
pop.show((Component)e.getSource(),e.getX(),e.getY()); 
} 
} 
public void text_ancestorAdded(AncestorEvent e){ 
this.dirty=false; 
this.newtext(); 
} 
public void text_caretUpdate(CaretEvent e) 
{ 
this.dirty=true; 
//this.statubar.setText(this.text.getText()); 
} 
///////////// File ///////////////////////////////////// 
public void File_open_actionPerformed(ActionEvent e){ 
//打开的事件 
this.opentext(); 
} 

public void File_new_actionPerformed(ActionEvent e){ 
///新建的事件 
this.newtext(); 
} 

public void File_save_actionPerformed(ActionEvent e){ 
//保存的事件 
this.save(); 
} 

public void File_saveas_actionPerformed(ActionEvent e){ 
//另存为 
this.saveas(); 
} 
public void File_quite_actionPerformed(ActionEvent e){ 
this.close(); 
} 
////////////////// Edit ///////////////////////////////////// 
public void Edit_undo_actionPerformed(ActionEvent e){ 
//撤销 
this.undo(); 
} 
public void Edit_cut_actionPerformed(ActionEvent e){ 
//剪切 
this.cut(); 
} 
public void Edit_copy_actionPerformed(ActionEvent e){ 
//复制 
this.copy(); 
} 
public void Edit_paste_actionPerformed(ActionEvent e){ 
//粘贴 
this.paste(); 
} 
public void Edit_delete_actionPerformed(ActionEvent e){ 
//删除 
this.delete(); 
} 
public void Edit_find_actionPerformed(ActionEvent e){ 
//查找 
int cu=this.text.getCaretPosition(); 
int end=this.text.getText().length(); 
FindDlg fd=new FindDlg(frame,"查找",true); 
fd.show(); 
String str=fd.getFindStr().trim(); 


if(fd.getFlag()){ 
this.nextFindStr(str,cu,end); 
}else{ 
this.upFindStr(str,cu); 
} 

} 
public void Edit_replace_actionPerformed(ActionEvent e){ 
//替换 
int cu=this.text.getCaretPosition(); 
int end=this.text.getText().length(); 
ReplaceDlg rd=new ReplaceDlg(frame,"替换",true); 
rd.show(); 
this.replaceStr(rd.findStr().trim(),rd.replaceStr().trim(),cu,end); 
} 
public void Edit_selectall_actionPerformed(ActionEvent e){ 
//全选 
this.text.setSelectionStart(0); 
this.text.setSelectionEnd(this.text.getText().length()); 
} 
public void Edit_timedate_actionPerformed(ActionEvent e){ 
//时间日期 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
this.text.append("\r\n当前时间:"+sdf.format(new Date())); 
} 
///////////// Format////////////////////////////////////// 
public void Format_word_actionPerformed(ActionEvent e){ 
//自动换行 
if(!this.text.getLineWrap()){ 
this.text.setLineWrap(true); 
} 
else{ 
this.text.setLineWrap(false); 
} 
} 
public void Format_font_actionPerformed(ActionEvent e){ 
//字体"常规","斜体","粗体","粗斜体" 
Font cur=this.text.getFont(); 
int type=Font.BOLD; 
FontSet fs=new FontSet(frame,"字体设置",true); 
fs.show(); 
if(fs.flag){ 
switch(fs.font2()){ 
case 0:type=Font.PLAIN;break; 
case 1:type=Font.ITALIC;break; 
case 2:type=Font.BOLD; break; 
case 3:type=Font.ROMAN_BASELINE;break; 
default:type=Font.PLAIN;break; 
} 
Font f=new Font(fs.font1(),type,16); 
this.text.setFont(f); 
}else{ 
this.text.setFont(cur); 
} 
} 
public void Format_color_actionPerformed(ActionEvent e){ 
// 颜色 
Color current=this.text.getForeground(); 
this.jColor.setColor(current); 
this.text.setForeground( 
this.jColor.showDialog(text,"选择颜色",current)); 

} 
//////////////////// Help ///////////////////////////////////// 
public void Help_about_actionPerformed(ActionEvent e){ 
//关于作者 
new AboutDlg(); 
} 
//////////////////////////////////////////////////////// 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -