Notepad

Education is not limited to just classrooms. It can be gained anytime, anywhere... - Ravi Ranjan (M.Tech-NIT)

Notepad in Java with source code

Notepad in Java with source code: We can develop Notepad in java with the help of AWT/Swing with event handling. Let's see the code of creating Notepad in java.

  1. import java.io.*;  
  2. import java.util.Date;  
  3. import java.awt.*;  
  4. import java.awt.event.*;  
  5. import javax.swing.*;  
  6. import javax.swing.event.*;  
  7.   
  8. /************************************/  
  9. class FileOperation  
  10. {  
  11. Notepad npd;  
  12.   
  13. boolean saved;  
  14. boolean newFileFlag;  
  15. String fileName;  
  16. String applicationTitle="Notepad - JavaTpoint";  
  17.   
  18. File fileRef;  
  19. JFileChooser chooser;  
  20. /////////////////////////////  
  21. boolean isSave(){return saved;}  
  22. void setSave(boolean saved){this.saved=saved;}  
  23. String getFileName(){return new String(fileName);}  
  24. void setFileName(String fileName){this.fileName=new String(fileName);}  
  25. /////////////////////////  
  26. FileOperation(Notepad npd)  
  27. {  
  28. this.npd=npd;  
  29.   
  30. saved=true;  
  31. newFileFlag=true;  
  32. fileName=new String("Untitled");  
  33. fileRef=new File(fileName);  
  34. this.npd.f.setTitle(fileName+" - "+applicationTitle);  
  35.   
  36. chooser=new JFileChooser();  
  37. chooser.addChoosableFileFilter(new MyFileFilter(".java","Java Source Files(*.java)"));  
  38. chooser.addChoosableFileFilter(new MyFileFilter(".txt","Text Files(*.txt)"));  
  39. chooser.setCurrentDirectory(new File("."));  
  40.   
  41. }  
  42. //////////////////////////////////////  
  43.   
  44. boolean saveFile(File temp)  
  45. {  
  46. FileWriter fout=null;  
  47. try  
  48. {  
  49. fout=new FileWriter(temp);  
  50. fout.write(npd.ta.getText());  
  51. }  
  52. catch(IOException ioe){updateStatus(temp,false);return false;}  
  53. finally  
  54. {try{fout.close();}catch(IOException excp){}}  
  55. updateStatus(temp,true);  
  56. return true;  
  57. }  
  58. ////////////////////////  
  59. boolean saveThisFile()  
  60. {  
  61.   
  62. if(!newFileFlag)  
  63.     {return saveFile(fileRef);}  
  64.   
  65. return saveAsFile();  
  66. }  
  67. ////////////////////////////////////  
  68. boolean saveAsFile()  
  69. {  
  70. File temp=null;  
  71. chooser.setDialogTitle("Save As...");  
  72. chooser.setApproveButtonText("Save Now");   
  73. chooser.setApproveButtonMnemonic(KeyEvent.VK_S);  
  74. chooser.setApproveButtonToolTipText("Click me to save!");  
  75.   
  76. do  
  77. {  
  78. if(chooser.showSaveDialog(this.npd.f)!=JFileChooser.APPROVE_OPTION)  
  79.     return false;  
  80. temp=chooser.getSelectedFile();  
  81. if(!temp.exists()) break;  
  82. if(   JOptionPane.showConfirmDialog(  
  83.     this.npd.f,"<html>"+temp.getPath()+" already exists.<br>Do you want to replace it?<html>",  
  84.     "Save As",JOptionPane.YES_NO_OPTION  
  85.                 )==JOptionPane.YES_OPTION)  
  86.     break;  
  87. }while(true);  
  88.   
  89.   
  90. return saveFile(temp);  
  91. }  
  92.   
  93. ////////////////////////  
  94. boolean openFile(File temp)  
  95. {  
  96. FileInputStream fin=null;  
  97. BufferedReader din=null;  
  98.   
  99. try  
  100. {  
  101. fin=new FileInputStream(temp);  
  102. din=new BufferedReader(new InputStreamReader(fin));  
  103. String str=" ";  
  104. while(str!=null)  
  105. {  
  106. str=din.readLine();  
  107. if(str==null)  
  108. break;  
  109. this.npd.ta.append(str+" ");  
  110. }  
  111.   
  112. }  
  113. catch(IOException ioe){updateStatus(temp,false);return false;}  
  114. finally  
  115. {try{din.close();fin.close();}catch(IOException excp){}}  
  116. updateStatus(temp,true);  
  117. this.npd.ta.setCaretPosition(0);  
  118. return true;  
  119. }  
  120. ///////////////////////  
  121. void openFile()  
  122. {  
  123. if(!confirmSave()) return;  
  124. chooser.setDialogTitle("Open File...");  
  125. chooser.setApproveButtonText("Open this");   
  126. chooser.setApproveButtonMnemonic(KeyEvent.VK_O);  
  127. chooser.setApproveButtonToolTipText("Click me to open the selected file.!");  
  128.   
  129. File temp=null;  
  130. do  
  131. {  
  132. if(chooser.showOpenDialog(this.npd.f)!=JFileChooser.APPROVE_OPTION)  
  133.     return;  
  134. temp=chooser.getSelectedFile();  
  135.   
  136. if(temp.exists())   break;  
  137.   
  138. JOptionPane.showMessageDialog(this.npd.f,  
  139.     "<html>"+temp.getName()+"<br>file not found.<br>"+  
  140.     "Please verify the correct file name was given.<html>",  
  141.     "Open", JOptionPane.INFORMATION_MESSAGE);  
  142.   
  143. while(true);  
  144.   
  145. this.npd.ta.setText("");  
  146.   
  147. if(!openFile(temp))  
  148.     {  
  149.     fileName="Untitled"; saved=true;   
  150.     this.npd.f.setTitle(fileName+" - "+applicationTitle);  
  151.     }  
  152. if(!temp.canWrite())  
  153.     newFileFlag=true;  
  154.   
  155. }  
  156. ////////////////////////  
  157. void updateStatus(File temp,boolean saved)  
  158. {  
  159. if(saved)  
  160. {  
  161. this.saved=true;  
  162. fileName=new String(temp.getName());  
  163. if(!temp.canWrite())  
  164.     {fileName+="(Read only)"; newFileFlag=true;}  
  165. fileRef=temp;  
  166. npd.f.setTitle(fileName + " - "+applicationTitle);  
  167. npd.statusBar.setText("File : "+temp.getPath()+" saved/opened successfully.");  
  168. newFileFlag=false;  
  169. }  
  170. else  
  171. {  
  172. npd.statusBar.setText("Failed to save/open : "+temp.getPath());  
  173. }  
  174. }  
  175. ///////////////////////  
  176. boolean confirmSave()  
  177. {  
  178. String strMsg="<html>The text in the "+fileName+" file has been changed.<br>"+  
  179.     "Do you want to save the changes?<html>";  
  180. if(!saved)  
  181. {  
  182. int x=JOptionPane.showConfirmDialog(this.npd.f,strMsg,applicationTitle,  
  183. JOptionPane.YES_NO_CANCEL_OPTION);  
  184.   
  185. if(x==JOptionPane.CANCEL_OPTION) return false;  
  186. if(x==JOptionPane.YES_OPTION && !saveAsFile()) return false;  
  187. }  
  188. return true;  
  189. }  
  190. ///////////////////////////////////////  
  191. void newFile()  
  192. {  
  193. if(!confirmSave()) return;  
  194.   
  195. this.npd.ta.setText("");  
  196. fileName=new String("Untitled");  
  197. fileRef=new File(fileName);  
  198. saved=true;  
  199. newFileFlag=true;  
  200. this.npd.f.setTitle(fileName+" - "+applicationTitle);  
  201. }  
  202. //////////////////////////////////////  
  203. }// end defination of class FileOperation  
  204. /************************************/  
  205. public class Notepad  implements ActionListener, MenuConstants  
  206. {  
  207.   
  208. JFrame f;  
  209. JTextArea ta;  
  210. JLabel statusBar;  
  211.   
  212. private String fileName="Untitled";  
  213. private boolean saved=true;  
  214. String applicationName="Javapad";  
  215.   
  216. String searchString, replaceString;  
  217. int lastSearchIndex;  
  218.   
  219. FileOperation fileHandler;  
  220. FontChooser fontDialog=null;  
  221. FindDialog findReplaceDialog=null;   
  222. JColorChooser bcolorChooser=null;  
  223. JColorChooser fcolorChooser=null;  
  224. JDialog backgroundDialog=null;  
  225. JDialog foregroundDialog=null;  
  226. JMenuItem cutItem,copyItem, deleteItem, findItem, findNextItem,  
  227. replaceItem, gotoItem, selectAllItem;  
  228. /****************************/  
  229. Notepad()  
  230. {  
  231. f=new JFrame(fileName+" - "+applicationName);  
  232. ta=new JTextArea(30,60);  
  233. statusBar=new JLabel("||       Ln 1, Col 1  ",JLabel.RIGHT);  
  234. f.add(new JScrollPane(ta),BorderLayout.CENTER);  
  235. f.add(statusBar,BorderLayout.SOUTH);  
  236. f.add(new JLabel("  "),BorderLayout.EAST);  
  237. f.add(new JLabel("  "),BorderLayout.WEST);  
  238. createMenuBar(f);  
  239. //f.setSize(350,350);  
  240. f.pack();  
  241. f.setLocation(100,50);  
  242. f.setVisible(true);  
  243. f.setLocation(150,50);  
  244. f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);  
  245.   
  246. fileHandler=new FileOperation(this);  
  247.   
  248. /////////////////////  
  249.   
  250. ta.addCaretListener(  
  251. new CaretListener()  
  252. {  
  253. public void caretUpdate(CaretEvent e)  
  254. {  
  255. int lineNumber=0, column=0, pos=0;  
  256.   
  257. try  
  258. {  
  259. pos=ta.getCaretPosition();  
  260. lineNumber=ta.getLineOfOffset(pos);  
  261. column=pos-ta.getLineStartOffset(lineNumber);  
  262. }catch(Exception excp){}  
  263. if(ta.getText().length()==0){lineNumber=0; column=0;}  
  264. statusBar.setText("||       Ln "+(lineNumber+1)+", Col "+(column+1));  
  265. }  
  266. });  
  267. //////////////////  
  268. DocumentListener myListener = new DocumentListener()  
  269. {  
  270. public void changedUpdate(DocumentEvent e){fileHandler.saved=false;}  
  271. public void removeUpdate(DocumentEvent e){fileHandler.saved=false;}  
  272. public void insertUpdate(DocumentEvent e){fileHandler.saved=false;}  
  273. };  
  274. ta.getDocument().addDocumentListener(myListener);  
  275. /////////  
  276. WindowListener frameClose=new WindowAdapter()  
  277. {  
  278. public void windowClosing(WindowEvent we)  
  279. {  
  280. if(fileHandler.confirmSave())System.exit(0);  
  281. }  
  282. };  
  283. f.addWindowListener(frameClose);  
  284. //////////////////  
  285. /* 
  286. ta.append("Hello dear hello hi"); 
  287. ta.append(" who are u dear mister hello"); 
  288. ta.append(" hello bye hel"); 
  289. ta.append(" Hello"); 
  290. ta.append(" Miss u mister hello hell"); 
  291. fileHandler.saved=true; 
  292. */  
  293. }  
  294. ////////////////////////////////////  
  295. void goTo()  
  296. {  
  297. int lineNumber=0;  
  298. try  
  299. {  
  300. lineNumber=ta.getLineOfOffset(ta.getCaretPosition())+1;  
  301. String tempStr=JOptionPane.showInputDialog(f,"Enter Line Number:",""+lineNumber);  
  302. if(tempStr==null)  
  303.     {return;}  
  304. lineNumber=Integer.parseInt(tempStr);  
  305. ta.setCaretPosition(ta.getLineStartOffset(lineNumber-1));  
  306. }catch(Exception e){}  
  307. }  
  308. ///////////////////////////////////  
  309. public void actionPerformed(ActionEvent ev)  
  310. {  
  311. String cmdText=ev.getActionCommand();  
  312. ////////////////////////////////////  
  313. if(cmdText.equals(fileNew))  
  314.     fileHandler.newFile();  
  315. else if(cmdText.equals(fileOpen))  
  316.     fileHandler.openFile();  
  317. ////////////////////////////////////  
  318. else if(cmdText.equals(fileSave))  
  319.     fileHandler.saveThisFile();  
  320. ////////////////////////////////////  
  321. else if(cmdText.equals(fileSaveAs))  
  322.     fileHandler.saveAsFile();  
  323. ////////////////////////////////////  
  324. else if(cmdText.equals(fileExit))  
  325.     {if(fileHandler.confirmSave())System.exit(0);}  
  326. ////////////////////////////////////  
  327. else if(cmdText.equals(filePrint))  
  328. JOptionPane.showMessageDialog(  
  329.     Notepad.this.f,  
  330.     "Get ur printer repaired first! It seems u dont have one!",  
  331.     "Bad Printer",  
  332.     JOptionPane.INFORMATION_MESSAGE  
  333.     );  
  334. ////////////////////////////////////  
  335. else if(cmdText.equals(editCut))  
  336.     ta.cut();  
  337. ////////////////////////////////////  
  338. else if(cmdText.equals(editCopy))  
  339.     ta.copy();  
  340. ////////////////////////////////////  
  341. else if(cmdText.equals(editPaste))  
  342.     ta.paste();  
  343. ////////////////////////////////////  
  344. else if(cmdText.equals(editDelete))  
  345.     ta.replaceSelection("");  
  346. ////////////////////////////////////  
  347. else if(cmdText.equals(editFind))  
  348. {  
  349. if(Notepad.this.ta.getText().length()==0)  
  350.     return// text box have no text  
  351. if(findReplaceDialog==null)  
  352.     findReplaceDialog=new FindDialog(Notepad.this.ta);  
  353. findReplaceDialog.showDialog(Notepad.this.f,true);//find  
  354. }  
  355. ////////////////////////////////////  
  356. else if(cmdText.equals(editFindNext))  
  357. {  
  358. if(Notepad.this.ta.getText().length()==0)  
  359.     return// text box have no text  
  360.   
  361. if(findReplaceDialog==null)  
  362.     statusBar.setText("Use Find option of Edit Menu first !!!!");  
  363. else  
  364.     findReplaceDialog.findNextWithSelection();  
  365. }  
  366. ////////////////////////////////////  
  367. else if(cmdText.equals(editReplace))  
  368. {  
  369. if(Notepad.this.ta.getText().length()==0)  
  370.     return// text box have no text  
  371.   
  372. if(findReplaceDialog==null)  
  373.     findReplaceDialog=new FindDialog(Notepad.this.ta);  
  374. findReplaceDialog.showDialog(Notepad.this.f,false);//replace  
  375. }  
  376. ////////////////////////////////////  
  377. else if(cmdText.equals(editGoTo))  
  378. {  
  379. if(Notepad.this.ta.getText().length()==0)  
  380.     return// text box have no text  
  381. goTo();  
  382. }  
  383. ////////////////////////////////////  
  384. else if(cmdText.equals(editSelectAll))  
  385.     ta.selectAll();  
  386. ////////////////////////////////////  
  387. else if(cmdText.equals(editTimeDate))  
  388.     ta.insert(new Date().toString(),ta.getSelectionStart());  
  389. ////////////////////////////////////  
  390. else if(cmdText.equals(formatWordWrap))  
  391. {  
  392. JCheckBoxMenuItem temp=(JCheckBoxMenuItem)ev.getSource();  
  393. ta.setLineWrap(temp.isSelected());  
  394. }  
  395. ////////////////////////////////////  
  396. else if(cmdText.equals(formatFont))  
  397. {  
  398. if(fontDialog==null)  
  399.     fontDialog=new FontChooser(ta.getFont());  
  400.   
  401. if(fontDialog.showDialog(Notepad.this.f,"Choose a font"))  
  402.     Notepad.this.ta.setFont(fontDialog.createFont());  
  403. }  
  404. ////////////////////////////////////  
  405. else if(cmdText.equals(formatForeground))  
  406.     showForegroundColorDialog();  
  407. ////////////////////////////////////  
  408. else if(cmdText.equals(formatBackground))  
  409.     showBackgroundColorDialog();  
  410. ////////////////////////////////////  
  411.   
  412. else if(cmdText.equals(viewStatusBar))  
  413. {  
  414. JCheckBoxMenuItem temp=(JCheckBoxMenuItem)ev.getSource();  
  415. statusBar.setVisible(temp.isSelected());  
  416. }  
  417. ////////////////////////////////////  
  418. else if(cmdText.equals(helpAboutNotepad))  
  419. {  
  420. JOptionPane.showMessageDialog(Notepad.this.f,aboutText,"Dedicated 2 u!",  
  421. JOptionPane.INFORMATION_MESSAGE);  
  422. }  
  423. else  
  424.     statusBar.setText("This "+cmdText+" command is yet to be implemented");  
  425. }//action Performed  
  426. ////////////////////////////////////  
  427. void showBackgroundColorDialog()  
  428. {  
  429. if(bcolorChooser==null)  
  430.     bcolorChooser=new JColorChooser();  
  431. if(backgroundDialog==null)  
  432.     backgroundDialog=JColorChooser.createDialog  
  433.         (Notepad.this.f,  
  434.         formatBackground,  
  435.         false,  
  436.         bcolorChooser,  
  437.         new ActionListener()  
  438.         {public void actionPerformed(ActionEvent evvv){  
  439.             Notepad.this.ta.setBackground(bcolorChooser.getColor());}},  
  440.         null);        
  441.   
  442. backgroundDialog.setVisible(true);  
  443. }  
  444. ////////////////////////////////////  
  445. void showForegroundColorDialog()  
  446. {  
  447. if(fcolorChooser==null)  
  448.     fcolorChooser=new JColorChooser();  
  449. if(foregroundDialog==null)  
  450.     foregroundDialog=JColorChooser.createDialog  
  451.         (Notepad.this.f,  
  452.         formatForeground,  
  453.         false,  
  454.         fcolorChooser,  
  455.         new ActionListener()  
  456.         {public void actionPerformed(ActionEvent evvv){  
  457.             Notepad.this.ta.setForeground(fcolorChooser.getColor());}},  
  458.         null);        
  459.   
  460. foregroundDialog.setVisible(true);  
  461. }  
  462.   
  463. ///////////////////////////////////  
  464. JMenuItem createMenuItem(String s, int key,JMenu toMenu,ActionListener al)  
  465. {  
  466. JMenuItem temp=new JMenuItem(s,key);  
  467. temp.addActionListener(al);  
  468. toMenu.add(temp);  
  469.   
  470. return temp;  
  471. }  
  472. ////////////////////////////////////  
  473. JMenuItem createMenuItem(String s, int key,JMenu toMenu,int aclKey,ActionListener al)  
  474. {  
  475. JMenuItem temp=new JMenuItem(s,key);  
  476. temp.addActionListener(al);  
  477. temp.setAccelerator(KeyStroke.getKeyStroke(aclKey,ActionEvent.CTRL_MASK));  
  478. toMenu.add(temp);  
  479.   
  480. return temp;  
  481. }  
  482. ////////////////////////////////////  
  483. JCheckBoxMenuItem createCheckBoxMenuItem(String s,  
  484.  int key,JMenu toMenu,ActionListener al)  
  485. {  
  486. JCheckBoxMenuItem temp=new JCheckBoxMenuItem(s);  
  487. temp.setMnemonic(key);  
  488. temp.addActionListener(al);  
  489. temp.setSelected(false);  
  490. toMenu.add(temp);  
  491.   
  492. return temp;  
  493. }  
  494. ////////////////////////////////////  
  495. JMenu createMenu(String s,int key,JMenuBar toMenuBar)  
  496. {  
  497. JMenu temp=new JMenu(s);  
  498. temp.setMnemonic(key);  
  499. toMenuBar.add(temp);  
  500. return temp;  
  501. }  
  502. /*********************************/  
  503. void createMenuBar(JFrame f)  
  504. {  
  505. JMenuBar mb=new JMenuBar();  
  506. JMenuItem temp;  
  507.   
  508. JMenu fileMenu=createMenu(fileText,KeyEvent.VK_F,mb);  
  509. JMenu editMenu=createMenu(editText,KeyEvent.VK_E,mb);  
  510. JMenu formatMenu=createMenu(formatText,KeyEvent.VK_O,mb);  
  511. JMenu viewMenu=createMenu(viewText,KeyEvent.VK_V,mb);  
  512. JMenu helpMenu=createMenu(helpText,KeyEvent.VK_H,mb);  
  513.   
  514. createMenuItem(fileNew,KeyEvent.VK_N,fileMenu,KeyEvent.VK_N,this);  
  515. createMenuItem(fileOpen,KeyEvent.VK_O,fileMenu,KeyEvent.VK_O,this);  
  516. createMenuItem(fileSave,KeyEvent.VK_S,fileMenu,KeyEvent.VK_S,this);  
  517. createMenuItem(fileSaveAs,KeyEvent.VK_A,fileMenu,this);  
  518. fileMenu.addSeparator();  
  519. temp=createMenuItem(filePageSetup,KeyEvent.VK_U,fileMenu,this);  
  520. temp.setEnabled(false);  
  521. createMenuItem(filePrint,KeyEvent.VK_P,fileMenu,KeyEvent.VK_P,this);  
  522. fileMenu.addSeparator();  
  523. createMenuItem(fileExit,KeyEvent.VK_X,fileMenu,this);  
  524.   
  525. temp=createMenuItem(editUndo,KeyEvent.VK_U,editMenu,KeyEvent.VK_Z,this);  
  526. temp.setEnabled(false);  
  527. editMenu.addSeparator();  
  528. cutItem=createMenuItem(editCut,KeyEvent.VK_T,editMenu,KeyEvent.VK_X,this);  
  529. copyItem=createMenuItem(editCopy,KeyEvent.VK_C,editMenu,KeyEvent.VK_C,this);  
  530. createMenuItem(editPaste,KeyEvent.VK_P,editMenu,KeyEvent.VK_V,this);  
  531. deleteItem=createMenuItem(editDelete,KeyEvent.VK_L,editMenu,this);  
  532. deleteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));  
  533. editMenu.addSeparator();  
  534. findItem=createMenuItem(editFind,KeyEvent.VK_F,editMenu,KeyEvent.VK_F,this);  
  535. findNextItem=createMenuItem(editFindNext,KeyEvent.VK_N,editMenu,this);  
  536. findNextItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));  
  537. replaceItem=createMenuItem(editReplace,KeyEvent.VK_R,editMenu,KeyEvent.VK_H,this);  
  538. gotoItem=createMenuItem(editGoTo,KeyEvent.VK_G,editMenu,KeyEvent.VK_G,this);  
  539. editMenu.addSeparator();  
  540. selectAllItem=createMenuItem(editSelectAll,KeyEvent.VK_A,editMenu,KeyEvent.VK_A,this);  
  541. createMenuItem(editTimeDate,KeyEvent.VK_D,editMenu,this)  
  542. .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));  
  543.   
  544. createCheckBoxMenuItem(formatWordWrap,KeyEvent.VK_W,formatMenu,this);  
  545.   
  546. createMenuItem(formatFont,KeyEvent.VK_F,formatMenu,this);  
  547. formatMenu.addSeparator();  
  548. createMenuItem(formatForeground,KeyEvent.VK_T,formatMenu,this);  
  549. createMenuItem(formatBackground,KeyEvent.VK_P,formatMenu,this);  
  550.   
  551. createCheckBoxMenuItem(viewStatusBar,KeyEvent.VK_S,viewMenu,this).setSelected(true);  
  552. /************For Look and Feel***/  
  553. LookAndFeelMenu.createLookAndFeelMenuItem(viewMenu,this.f);  
  554.   
  555.   
  556. temp=createMenuItem(helpHelpTopic,KeyEvent.VK_H,helpMenu,this);  
  557. temp.setEnabled(false);  
  558. helpMenu.addSeparator();  
  559. createMenuItem(helpAboutNotepad,KeyEvent.VK_A,helpMenu,this);  
  560.   
  561. MenuListener editMenuListener=new MenuListener()  
  562. {  
  563.    public void menuSelected(MenuEvent evvvv)  
  564.     {  
  565.     if(Notepad.this.ta.getText().length()==0)  
  566.     {  
  567.     findItem.setEnabled(false);  
  568.     findNextItem.setEnabled(false);  
  569.     replaceItem.setEnabled(false);  
  570.     selectAllItem.setEnabled(false);  
  571.     gotoItem.setEnabled(false);  
  572.     }  
  573.     else  
  574.     {  
  575.     findItem.setEnabled(true);  
  576.     findNextItem.setEnabled(true);  
  577.     replaceItem.setEnabled(true);  
  578.     selectAllItem.setEnabled(true);  
  579.     gotoItem.setEnabled(true);  
  580.     }  
  581.     if(Notepad.this.ta.getSelectionStart()==ta.getSelectionEnd())  
  582.     {  
  583.     cutItem.setEnabled(false);  
  584.     copyItem.setEnabled(false);  
  585.     deleteItem.setEnabled(false);  
  586.     }  
  587.     else  
  588.     {  
  589.     cutItem.setEnabled(true);  
  590.     copyItem.setEnabled(true);  
  591.     deleteItem.setEnabled(true);  
  592.     }  
  593.     }  
  594.    public void menuDeselected(MenuEvent evvvv){}  
  595.    public void menuCanceled(MenuEvent evvvv){}  
  596. };  
  597. editMenu.addMenuListener(editMenuListener);  
  598. f.setJMenuBar(mb);  
  599. }  
  600. /*************Constructor**************/  
  601. ////////////////////////////////////  
  602. public static void main(String[] s)  
  603. {  
  604. new Notepad();  
  605. }  
  606. }  
  607. /**************************************/  
  608. //public  
  609. interface MenuConstants  
  610. {  
  611. final String fileText="File";  
  612. final String editText="Edit";  
  613. final String formatText="Format";  
  614. final String viewText="View";  
  615. final String helpText="Help";  
  616.   
  617. final String fileNew="New";  
  618. final String fileOpen="Open...";  
  619. final String fileSave="Save";  
  620. final String fileSaveAs="Save As...";  
  621. final String filePageSetup="Page Setup...";  
  622. final String filePrint="Print";  
  623. final String fileExit="Exit";  
  624.   
  625. final String editUndo="Undo";  
  626. final String editCut="Cut";  
  627. final String editCopy="Copy";  
  628. final String editPaste="Paste";  
  629. final String editDelete="Delete";  
  630. final String editFind="Find...";  
  631. final String editFindNext="Find Next";  
  632. final String editReplace="Replace";  
  633. final String editGoTo="Go To...";  
  634. final String editSelectAll="Select All";  
  635. final String editTimeDate="Time/Date";  
  636.   
  637. final String formatWordWrap="Word Wrap";  
  638. final String formatFont="Font...";  
  639. final String formatForeground="Set Text color...";  
  640. final String formatBackground="Set Pad color...";  
  641.   
  642. final String viewStatusBar="Status Bar";  
  643.   
  644. final String helpHelpTopic="Help Topic";  
  645. final String helpAboutNotepad="About Javapad";  
  646.   
  647. final String aboutText="Your Javapad";  
  648. }  

Java Notepad with Source Code