DOC

Notepad

By Rose Crawford,2014-07-07 17:25
14 views 0
Notepad

import java.awt.*;

    import java.awt.event.*;

    import java.awt.datatransfer.*; import javax.swing.*;

    import java.io.*;

    import java.lang.*;

    public class Notepad extends JFrame{

     private final Color colorvalues[] =

     { Color.black, Color.blue, Color.red, Color.green }; //定义颜色数组

     String styleNames[] = { "Bold", "Italic" };//定义风格数组

     String fontNames[] = { "宋体", "华文行楷", "隶书" };//字体数组

     String[] sizeString = new String[30];//字号数组

     int[] size = new int[30];//与字号数组对应的字号整数,用于设置文字大小

     private JRadioButtonMenuItem colorItems[], fonts[];

     private JCheckBoxMenuItem styleItems[];

     private JTextArea displayText;//定义文本编辑区

     private ButtonGroup fontGroup, colorGroup;//字体组,跟字色组

     private int style;//字体风格

     private JScrollPane scroll;//为文本编辑区提供滚动条

     private String selectText = "";//存放文本编辑区中选中的文本内容

     private JComboBox styleBox,fontBox,sizeBox;//工具栏

     private JPanel toolPanel;//存放工具栏

     private int rowNumber = 0;

     private FileDialog fd = new FileDialog(this);

     // set up GUI

     public Notepad()

     {

     super( "记事本" );//标题

     //创建菜单条

     JMenuBar bar = new JMenuBar();

     setJMenuBar( bar );

     /*---------------------------------------------------------------------------------------*/

     // 设置文件菜单及其菜单项

     JMenu fileMenu = new JMenu( "文件(F)" );

     fileMenu.setMnemonic( 'F' );

     // 设置新建菜单项

     JMenuItem newItem = new JMenuItem( "新建,N" );

     newItem.setMnemonic( 'N' );

     fileMenu.add( newItem );

     newItem.addActionListener(

     new ActionListener() {

     public void actionPerformed( ActionEvent event )

     {displayText.setText("");

     }});

     // 设置打开菜单项

     JMenuItem openItem = new JMenuItem( "打开(O)" );

     openItem.setMnemonic( 'O' );

     fileMenu.add( openItem );

     openItem.addActionListener(

     new ActionListener() {

     public void actionPerformed( ActionEvent event )

     {

     fd.setTitle("打开"); //设置标题

     fd.show();

     if (fd.getFile() != null) {

     File file = new File(fd.getFile()); //用从fd中取得的文件建立新文件,即打开的文件

     displayText.setText( "");

     try {

     FileReader f = new FileReader(file);

     BufferedReader b = new BufferedReader(f);//按行读打开的文件,然后传入文本域

     String s;

     try {

     while ((s = b.readLine()) != null) {

     displayText.append(s + "\n");//将给定文本追加到文本域的当前文本,即把读的内容加入文本域!

     }

     f.close();

     b.close();

     } catch (IOException ex) {}

     } catch (FileNotFoundException ex) {}

     }

     else {return;}

     }

     });

     fileMenu.addSeparator(); //加分隔线

     // 设置保存菜单项

     JMenuItem saveItem = new JMenuItem( "保存(S)" );

     saveItem.setMnemonic( 'S' );

     fileMenu.add( saveItem );

     saveItem.addActionListener(

     new ActionListener() {

     public void actionPerformed( ActionEvent event )

     { fd.setFile("*.java");

     fd.setMode(FileDialog.SAVE);

     fd.setTitle("保存");

     fd.show();

     if (fd.getFile() != null) {

     File file = new File(fd.getFile());

     try {

     PrintWriter pw = new PrintWriter(new FileOutputStream(file));

     //1.5版本之前用这一句,之后可以用PrintWriter pw = new

    PrintWriter(file);

     pw.print(displayText.getText());

     //这一部分用于把textArea1中的内容打印到pw指定的文件file中去,file围在对话框中选定的文件

     pw.flush(); //刷新该流的缓冲,然后关闭该流

     pw.close();

     } catch (FileNotFoundException ex) {ex.printStackTrace();}

     }

     else {return;}

     }});

     // 设置另存为菜单项

     JMenuItem saveAsItem = new JMenuItem( "另存为(Z)" );

     saveAsItem.setMnemonic( 'Z' );

     fileMenu.add( saveAsItem );

     saveAsItem.addActionListener(

     new ActionListener() {

     public void actionPerformed( ActionEvent event )

     { fd.setFile("*.java");

     fd.setMode(FileDialog.SAVE);

     fd.setTitle("另存为");

     fd.show();

     if (fd.getFile() != null) {

     File file = new File(fd.getFile());

     try {

     PrintWriter pw = new PrintWriter(new FileOutputStream(file));

     //1.5版本之前用这一句,之后可以用PrintWriter pw = new

    PrintWriter(file);

     pw.print(displayText.getText());

     //这一部分用于把textArea1中的内容打印到pw指定的文件file中去,file围在对话框中选定的文件

     pw.flush(); //刷新该流的缓冲,然后关闭该流

     pw.close();

     } catch (FileNotFoundException ex) {ex.printStackTrace();}

     }

     else {return;}

     }});

     fileMenu.addSeparator(); //加分隔线

     // 设置退出菜单项

     JMenuItem exitItem = new JMenuItem( "退出(X)" );

     exitItem.setMnemonic( 'x' );

     fileMenu.add( exitItem );

     exitItem.addActionListener(

     new ActionListener() {

     public void actionPerformed( ActionEvent event )

     {

     System.exit( 0 );

     }

     }

     );

bar.add( fileMenu );

/*-------------------------------------------------------------------------------------------------*/

     //创建编辑菜单及其菜单项

     JMenu editMenu = new JMenu( "编辑(E)" );

     editMenu.setMnemonic( 'E' );

     //剪切菜单选项

     JMenuItem cutItem = new JMenuItem( "剪切(T)" );

     cutItem.setMnemonic( 'T' );

     editMenu.add( cutItem );

     cutItem.addActionListener(

     new ActionListener(){

     public void actionPerformed( ActionEvent event ){

     selectText = displayText.getSelectedText();//取得选定的文本

     int start = displayText.getSelectionStart();//选定的文本的开始位置

     int end = displayText.getSelectionEnd();//选定的文本的结束位置

     displayText.replaceRange("", start, end);/*用指定替换文本替换指定开始位置与结束位置之间的文本。

     这里指定替换文本为空,即为剪切了文本*/

     }

     }

     );

     //复制菜单选项

     JMenuItem copyItem = new JMenuItem( "复制(C)" );

     copyItem.setMnemonic( 'C' );

     editMenu.add( copyItem );

     copyItem.addActionListener(

     new ActionListener(){

     public void actionPerformed( ActionEvent event ){

     selectText = displayText.getSelectedText();//获得选中的内容,并保存在selectText

     }

     }

     );

     //粘贴的实现

     JMenuItem pasteItem = new JMenuItem( "粘贴(P)" );

     pasteItem.setMnemonic( 'P' );

     editMenu.add( pasteItem );

     pasteItem.addActionListener(

     new ActionListener(){

     public void actionPerformed( ActionEvent event ){

     int position = displayText.getCaretPosition();//获得鼠标当前位置

     displayText.insert( selectText,position );//插入到鼠标当前位置

     }

     }

     );

     editMenu.addSeparator();//加分隔线

     //替换的实现

     JMenuItem swapItem = new JMenuItem( "替换,R)" );

     swapItem.setMnemonic( 'R' );

     editMenu.add( swapItem );

     swapItem.addActionListener(

     new ActionListener(){

     public void actionPerformed( ActionEvent event ){

     JPanel swapPanel=new JPanel();

     JLabel lookupLabel=new JLabel("要替换的内容");

     JTextField inputText=new JTextField(10);

     JLabel swapLabel=new JLabel("替换为(");

     JTextField changetoText=new JTextField(10);

     swapPanel.add(lookupLabel);

     swapPanel.add(inputText);

     swapPanel.add(swapLabel);

     swapPanel.add(changetoText);

     JOptionPane.showMessageDialog(null,swapPanel);

     String text=displayText.getText();//获得整个文本内容

     String

    changeText=text.replaceFirst(inputText.getText(),changetoText.getText());//获得替换后的内容

     displayText.setText(changeText);

     }

     }

     );

     //全部替换的实现

     JMenuItem aswapItem = new JMenuItem( "全部替换,Q)" );

     aswapItem.setMnemonic( 'Q' );

     editMenu.add( aswapItem );

     aswapItem.addActionListener(

     new ActionListener(){

     public void actionPerformed( ActionEvent event ){

     JPanel swapPanel=new JPanel();

     JLabel lookupLabel=new JLabel("要替换的内容");

     JTextField inputText=new JTextField(10);

     JLabel swapLabel=new JLabel("替换为(");

     JTextField changetoText=new JTextField(10);

     swapPanel.add(lookupLabel);

     swapPanel.add(inputText);

     swapPanel.add(swapLabel);

     swapPanel.add(changetoText);

     JOptionPane.showMessageDialog(null,swapPanel);

     String text=displayText.getText();//获得整个文本内容

     String

    changeText=text.replaceAll(inputText.getText(),changetoText.getText());//获得替换后的内容

     displayText.setText(changeText);

     }

     }

     );

     editMenu.addSeparator();//加分隔线

     //插入子菜单

     JMenuItem insertItem=new JMenuItem("插入文本(K)");

     insertItem.setMnemonic('K');

     editMenu.add(insertItem);

     insertItem.addActionListener(

     new ActionListener(){

     public void actionPerformed(ActionEvent event){

     JPanel insertPanel=new JPanel();

     JLabel insertLabel=new JLabel("要插入的内容");

     JTextField inputText=new JTextField(10);

     insertPanel.add(insertLabel);

     insertPanel.add(inputText);

     JOptionPane.showMessageDialog(null,insertPanel);

     int fromIndex=displayText.getCaretPosition();//取得当前的光标位置

     displayText.insert(inputText.getText(),fromIndex);

     }

     }

     );

     //删除子菜单

     JMenuItem RemoveItem=new JMenuItem("删除(G)");

     RemoveItem.setMnemonic('G');

     editMenu.add(RemoveItem);

     RemoveItem.addActionListener(new ActionListener()

     {

     public void actionPerformed(ActionEvent e)

     { int start=displayText.getSelectionStart();

     int end=displayText.getSelectionEnd();

     displayText.replaceRange(null,start,end);

     }

     });

     editMenu.addSeparator();

     bar.add( editMenu );//add editMenu

/*------------------------------------------------------------------------------------------*/

     // 创建格式菜单及其菜单项

     JMenu formatMenu = new JMenu( "格式(R)" );

     formatMenu.setMnemonic( 'R' );

     //自动换行的功能切换

     JMenuItem changeItem = new JMenuItem( "自动换行(W)" );

     changeItem.setMnemonic( 'W' );

     formatMenu.add( changeItem );

     changeItem.addActionListener(

     new ActionListener(){

     boolean var = false;

     public void actionPerformed( ActionEvent event ){

     if(var) var = false;

     else var=true;

     displayText.setLineWrap(var);

     }

     }

     );

     // 颜色菜单项

     String colors[] = { "黑色", "蓝色", "红色", "绿色" };

     JMenu colorMenu = new JMenu( "颜色,C" );

     colorMenu.setMnemonic( 'C' );

     colorItems = new JRadioButtonMenuItem[ colors.length ];

     colorGroup = new ButtonGroup();

     ItemHandler itemHandler = new ItemHandler();

     // 创建颜色按钮监听器

     for ( int count = 0; count < colors.length; count++ ) {

     colorItems[ count ] =

     new JRadioButtonMenuItem( colors[ count ] );

     colorMenu.add( colorItems[ count ] );

     colorGroup.add( colorItems[ count ] );

     colorItems[ count ].addActionListener( itemHandler );

     }

     // 默认颜色

     colorItems[ 0 ].setSelected( true );

     // 将颜色菜单项菜单加入菜单

     formatMenu.add( colorMenu );

     formatMenu.addSeparator(); //加分隔线

     // 字体菜单项

     JMenu fontMenu = new JMenu( "字体(n)" );

     fontMenu.setMnemonic( 'n' );

     fonts = new JRadioButtonMenuItem[ fontNames.length ];

     fontGroup = new ButtonGroup();

     // 创建字体按钮监听器

     for ( int count = 0; count < fonts.length; count++ ) {

     fonts[ count ] = new JRadioButtonMenuItem( fontNames[ count ] );

     fontMenu.add( fonts[ count ] );

     fontGroup.add( fonts[ count ] );

     fonts[ count ].addActionListener( itemHandler );

     }

     // 默认字体

     fonts[ 0 ].setSelected( true );

     fontMenu.addSeparator();

     // 设置风格菜单

     styleItems = new JCheckBoxMenuItem[ styleNames.length ];

     for ( int count = 0; count < styleNames.length; count++ ) {

     styleItems[ count ] =

     new JCheckBoxMenuItem( styleNames[ count ] );

     fontMenu.add( styleItems[ count ] );

     StyleHandler styleHandler = new StyleHandler();

     styleItems[ count ].addItemListener( styleHandler );

     }

     formatMenu.add( fontMenu );

     bar.add( formatMenu );

/*-------------------------------------------------------------------------------------*/

     //创建查找菜单

     JMenu searchMenu = new JMenu( "查找,S" );

     searchMenu.setMnemonic( 'H' );

     //添加向前查找菜单项

     JMenuItem frontItem = new JMenuItem( "向前查找,F" );

     frontItem.setMnemonic( 'F' );

     searchMenu.add( frontItem );

     frontItem.addActionListener(

     new ActionListener() {

     public void actionPerformed( ActionEvent event )

     {JPanel swapPanel=new JPanel();

     JLabel seekLabel=new JLabel("要查找的内容");

     JTextField inputText=new JTextField(20);

     swapPanel.add(seekLabel);

     swapPanel.add(inputText);

     JOptionPane.showMessageDialog(null,swapPanel);

     String text=displayText.getText();//获得整个文本内容

     int fromIndex=displayText.getCaretPosition();//取得当前的光标位置

     int lastfromIndex=text.indexOf(inputText.getText(),fromIndex);//获得查找后的

    位置

     displayText.setCaretPosition(lastfromIndex);

     displayText.moveCaretPosition(lastfromIndex+inputText.getText().length());//使

    查找到的子字符串显示出来

     }

     }

     );

     //添加向后查找菜单项

     JMenuItem backItem = new JMenuItem( "向后查找,B" );

     backItem.setMnemonic( 'B' );

     searchMenu.add( backItem );

     backItem.addActionListener(

Report this document

For any questions or suggestions please email
cust-service@docsford.com