`

java记事本

    博客分类:
  • java
阅读更多

采用了第 3 方感官皮肤( xp )。总结该程序代码无非就是一个 JFrame 设置 JMenuBar —— >JMenu( 字符串作参数 ) —— >JMenuItem action 作为参数)。文本面板 JScrollPane+JTextPane ,由于 JTextPane 本身就有复制、粘贴、剪切方法,所以写这个程序也显得非常简单。功能设计得也很简单,主要是练习。

部分重要代码,菜单部分:

JMenuBar menubar = new JMenuBar ();                 // 实例化菜单栏

        JMenu menuFile = new JMenu (" 文件 ");                // 实例化菜单

        JMenu menuEdit = new JMenu (" 编辑 ");

        JMenu menuAbout = new JMenu (" 帮助 ");

        menuFile.add (new JMenuItem (actions[0]));          // 增加新菜单项

        menuFile.add (new JMenuItem (actions[1]));

        menuFile.add (new JMenuItem (actions[2]));

        menuFile.add (new JMenuItem (actions[7]));

        menuEdit.add (new JMenuItem (actions[3]));

        menuEdit.add (new JMenuItem (actions[4]));

        menuEdit.add (new JMenuItem (actions[5]));

        menuAbout.add (new JMenuItem (actions[6]));

        menubar.add (menuFile);                             // 增加菜单

        menubar.add (menuEdit);

        menubar.add (menuAbout);

事件的一部分代码:

class SaveAction extends AbstractAction

    {  // 保存命令

        public SaveAction ()

        {

            super (" 保存 ");

        }

        public void actionPerformed (ActionEvent e)

        {

            int i = filechooser.showSaveDialog (EditorDemo.this); // 显示保存文件对话框

            if (i == JFileChooser.APPROVE_OPTION)

            {  // 点击对话框中保存按钮

                File f = filechooser.getSelectedFile (); // 得到选择的文件

                try

                {

                    FileOutputStream out = new FileOutputStream (f);  // 得到文件输出流

                    out.write (textPane.getText ().getBytes ()); // 写出文件

                }

                catch (Exception ex)

                {

                    ex.printStackTrace (); // 输出出错信息

                }

            }

        }

    }

分享到:
评论
6 楼 dangjun625 2008-11-27  
练习 练习
5 楼 xuming9 2008-11-19  
我用swt写过1个,不过查找,替换功能没写 出来

不知道楼主写了没
4 楼 lixuanxianak 2008-11-10  
notepad 啊,很多书籍什么的都一他为例子!
3 楼 amcucn 2008-11-08  
night.jar 写道
基于跟楼主同样的练习目的,也做了一个java版的notepad.
不过对lz的“程序代码无非。。。”我这种小鸟实在不敢苟同。
不知道你是不是也实现了除了“帮助主题”之外的所有功能。
请问你是否认为根据文本域的不同状态disable掉一些menuitem真的是很棒的设计?
请问你是如何实现查找对话框和替换对话框中查找文本的同步的?
请问在转到对话框中你是如何实现文本域拒绝非数字输入,并且显示提示标签的?要知道在netbeans里面是没有提示标签的,而jedit根本就不拒绝非数字输入。
请问你认为自动换行后隐藏状态栏真的有必要吗?
请问你是如何获得系统字体,并让它们能够很好的显示中文的?
请问你是如何实现对文件的编码并自动识别正确显示不同编码的文件的?因为要用第三方jar包,我没有实现。请问不用第三方jar如何实现?
很期待高手的答复,这些问题无不困扰了我好一段时间。
另外为什么你贴出的代码是我认为最不重要的呢?
期待贴出一些更重要的代码。
我的toy在http://www.svnhost.cn/Project/Detail-2182.shtml,欢迎高手批评指正。

楼上的问题好专业啊,是不是专门做这方面的?
2 楼 night.jar 2008-11-08  
基于跟楼主同样的练习目的,也做了一个java版的notepad.
不过对lz的“程序代码无非。。。”我这种小鸟实在不敢苟同。
不知道你是不是也实现了除了“帮助主题”之外的所有功能。
请问你是否认为根据文本域的不同状态disable掉一些menuitem真的是很棒的设计?
请问你是如何实现查找对话框和替换对话框中查找文本的同步的?
请问在转到对话框中你是如何实现文本域拒绝非数字输入,并且显示提示标签的?要知道在netbeans里面是没有提示标签的,而jedit根本就不拒绝非数字输入。
请问你认为自动换行后隐藏状态栏真的有必要吗?
请问你是如何获得系统字体,并让它们能够很好的显示中文的?
请问你是如何实现对文件的编码并自动识别正确显示不同编码的文件的?因为要用第三方jar包,我没有实现。请问不用第三方jar如何实现?
很期待高手的答复,这些问题无不困扰了我好一段时间。
另外为什么你贴出的代码是我认为最不重要的呢?
期待贴出一些更重要的代码。
我的toy在http://www.svnhost.cn/Project/Detail-2182.shtml,欢迎高手批评指正。
1 楼 vlinux 2008-06-21  
<p>小弟不才,斗胆提出几点意见。</p>
<p> </p>
<ol>
<li>设计的时候,界面用GuiMainFrame来构造,IDE推荐采用NetBeans6.0。其中,所有的组件:JTextArea、JMenu等全部都设置为protected或者默认。然后用MainFrame去继承这个GuiMainFrame,最后再添加具体的事件及其处理。好处是可以界面代码与业务逻辑代码分离。</li>
<li>事件推荐采用内部类,然后调用本地private方法的方式。addListener的时候用内部类,然后再在这个内部类的<span>actionPerformed方法</span>中调用本地的private方法,最后再在本地的private方法中执行具体业务逻辑。好处自然是多个事件可以采用同一种处理流程--例如点击右上角的关闭按钮与[菜单]-&gt;[文件]-&gt;[退出]的事件应该是一样的流程。</li>
<li>异常处理不到位。
<pre name='code' class='java'>                try
                {
                    FileOutputStream out = new FileOutputStream (f);  // 得到文件输出流
                    out.write (textPane.getText ().getBytes ()); // 写出文件
                }
                catch (Exception ex)
                {
                    ex.printStackTrace (); // 输出出错信息
                } </pre>
 这个没啥好说的,多看点异常处理的文章吧。</li>
</ol>
<p>兄弟,加油哇<img src='../../../../../images/smiles/icon_biggrin.gif' alt=''/></p>

相关推荐

Global site tag (gtag.js) - Google Analytics