论坛首页 Java企业应用论坛

java记事本

浏览 5526 次
锁定老帖子 主题:java记事本
精华帖 (0) :: 良好帖 (0) :: 新手帖 (19) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-06-21  
OO

采用了第 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 (); // 输出出错信息

                }

            }

        }

    }

   发表时间:2008-06-21  

小弟不才,斗胆提出几点意见。

 

  1. 设计的时候,界面用GuiMainFrame来构造,IDE推荐采用NetBeans6.0。其中,所有的组件:JTextArea、JMenu等全部都设置为protected或者默认。然后用MainFrame去继承这个GuiMainFrame,最后再添加具体的事件及其处理。好处是可以界面代码与业务逻辑代码分离。
  2. 事件推荐采用内部类,然后调用本地private方法的方式。addListener的时候用内部类,然后再在这个内部类的actionPerformed方法中调用本地的private方法,最后再在本地的private方法中执行具体业务逻辑。好处自然是多个事件可以采用同一种处理流程--例如点击右上角的关闭按钮与[菜单]->[文件]->[退出]的事件应该是一样的流程。
  3. 异常处理不到位。
                    try
                    {
                        FileOutputStream out = new FileOutputStream (f);  // 得到文件输出流
                        out.write (textPane.getText ().getBytes ()); // 写出文件
                    }
                    catch (Exception ex)
                    {
                        ex.printStackTrace (); // 输出出错信息
                    } 
     这个没啥好说的,多看点异常处理的文章吧。

兄弟,加油哇

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

楼上的问题好专业啊,是不是专门做这方面的?
0 请登录后投票
   发表时间:2008-11-10  
notepad 啊,很多书籍什么的都一他为例子!
0 请登录后投票
   发表时间:2008-11-19  
我用swt写过1个,不过查找,替换功能没写 出来

不知道楼主写了没
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics