用Java程序编写一个记事本程序的设计报告学习中心(点):泾阳学习中心专业:计算机科学与技术层次:专升本**:***批次: 112目录一、设计分析 (1)二、程序结构 (1)三、各模块的功能及程序说明 (2)1、类设计 (2)2、主要功能代码实现 (4)四、源程序 (9)五、操作方法 (20)六、试验结果 (20)七、设计体会 (22)用Java程序编写一个记事本程序的设计报告一、设计要求1.用图形用户界面实现。
2.能实现编辑、保存、另存为、查找替换等功能。
二、程序结构流程图:图1基本流程图本Java文本编辑器功能设计如下:图2基本功能图三、各模块的功能及程序说明1、类设计(1)类MiniText ,包括initTextPane方法初始化面板,initMenu()方法初始化菜单,initAboutDialog()方法初始化关于对话框,initToolBar()方法初始化工具栏,initRightKey()方法初始化右键设置,等方法。
类成员如下:(2)类Loading (实现登陆)类成员如下:(3)类runtime (实现时间同步)类成员如下:(4)类MainFunction (包含主函数)类成员如下:2、主要功能代码实现(1)登陆界面:class Loading extends JWindow implements Runnable {Thread dluThread=null;private JProgressBar progress;public Loading() {setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));//设置光标为等待状态JPanel dlu = new JPanel(new BorderLayout());URL url = getClass().getResource("/images/loading.jpg");if(url != null){dlu.add(new JButton(new ImageIcon(url)), BorderLayout.CENTER);}progress = new JProgressBar(1,100);progress.setStringPainted(true);progress.setBorderPainted(true);progress.setBackground(Color.white);progress.setForeground(Color.green);dlu.add(progress,BorderLayout.SOUTH);setContentPane(dlu); //设置窗口属性为登陆面板属性Dimension screen = getToolkit().getScreenSize();pack(); //显示登陆界面setLocation(screen.width/4,screen.height/4); //设置登陆界面始终在屏幕中间显示}public void start(){// this.toFront();dluThread=new Thread(this);dluThread.start(); }public void run(){show();try {for (int i=0;i<100;i++){Thread.sleep(100);progress.setValue(progress.getValue() + 1);progress.setString("欢迎进入迷你编辑,请稍后... ... "+i+"%"); } }catch (Exception ex) {ex.printStackTrace(); }dispose();//关闭登陆界面} }(2).时间标签:class runtime extends JButton implements Runnable{Thread datetime=null;public runtime(){}public void run(){for(;;){//java.util.Date timeer=new java.util.Date();Calendar now=Calendar.getInstance();int year1=now.get(Calendar.YEAR);int month1=now.get(Calendar.MONTH);int day1=now.get(Calendar.DAY_OF_MONTH);int hour1=now.get(Calendar.HOUR);int minute1=now.get(Calendar.MINUTE);int sec=now.get(Calendar.SECOND);setText(year1+"年"+month1+"月"+day1+"日"+hour1+":"+minute1+":"+sec);//System.out.println(now.get(Calendar.DAY_OF_MONTH)-60);try{Thread.currentThread().sleep(1000);}catch(InterruptedException e){} } }}(3)右键的实现:void initRightKey (){filepopup=new JPopupMenu();uundo=new JMenuItem("撤消(U)");uundo.setMnemonic('U');ccut=new JMenuItem("剪切(T)");ccut.setMnemonic('T');ccopy=new JMenuItem("复制(C)");ccopy.setMnemonic('C');ppaste=new JMenuItem("粘贴(V)");ppaste.setMnemonic('V');ddelete=new JMenuItem("删除(D)");ddelete.setMnemonic('D');sselectall=new JMenuItem("全选(A)");sselectall.setMnemonic('A');filepopup.add(uundo);filepopup.addSeparator();filepopup.add(ccut);filepopup.add(ccopy);filepopup.add(ppaste);filepopup.add(ddelete);filepopup.addSeparator();filepopup.add(sselectall);uundo.addActionListener(action);ccut.addActionListener(action);ccopy.addActionListener(action);ppaste.addActionListener(action);ddelete.addActionListener(action);sselectall.addActionListener(action);text.addMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent event){checkForTriggerEvent(event);}public void mouseReleased(MouseEvent event){checkForTriggerEvent(event);}public void checkForTriggerEvent(MouseEvent event){if(event.isPopupTrigger()){filepopup.show(event.getComponent(),event.getX(),event.getY());} }}); }(4)打开、保存、复制、粘贴、撤销等功能事件响应实现://事件处理ActionListener action = new ActionListener(){public void actionPerformed(ActionEvent e){ JMenuItem mi = (JMenuItem)e.getSource();String id = mi.getText();if(id.equals("新建")){Date date=new Date();text.setText(date.toString());file = null;}else if(id.equals("打开...")){if(file != null)filechooser.setSelectedFile(file);//为用户选择文件提供了一种简单的机制int returnVal = filechooser.showOpenDialog(MiniText.this);if(returnVal == JFileChooser.APPROVE_OPTION){file = filechooser.getSelectedFile();openFile(); } }else if(id.equals("保存...")){if(file != null)filechooser.setSelectedFile(file);int returnVal = filechooser.showSaveDialog(MiniText.this);if(returnVal == JFileChooser.APPROVE_OPTION){file = filechooser.getSelectedFile();saveFile();JOptionPane.showMessageDialog(null,"已保存");}}else if(id.equals("另存为")){if(file != null)filechooser.setSelectedFile(file);int returnVal = filechooser.showSaveDialog(MiniText.this);if(returnVal == JFileChooser.APPROVE_OPTION){file = filechooser.getSelectedFile();saveFile();JOptionPane.showMessageDialog(null,"已保存"); } } else if(id.equals("打印")){prt.printDialog();}else if(id.equals("打印页面设置")){try {prt.print();} catch(Exception ew){JOptionPane.showMessageDialog(null,"打印出错!","错误",JOptionPane.ERROR_MESSAGE); } }else if(id.equals("退出")){ System.exit(0); }else if(id.equals("剪切")||id.equals("剪切(T)")){ text.cut();}else if(id.equals("复制")||id.equals("复制(C)")){text.copy();}else if(id.equals("粘贴")||id.equals("粘贴(V)")){text.paste(); }else if(id.equals("删除")||id.equals("删除(D)")){text.replaceSelection(""); }else if(id.equals("选择全部")||id.equals("全选(A)")){text.selectAll();}else if(id.equals("字体颜色...")){color = JColorChooser.showDialog(MiniText.this,"字体颜色设置",color);text.setForeground(color);} else if(id.equals("自动换行")){ }else if(id.equals("撤销")||id.equals("撤消(U)")){text.setText("");text.selectAll();}else if(id.equals("查找")){String find="查找";find=JOptionPane.showInputDialog("查找:"); }else if(id.equals("时间")){time.setFont(new Font("Times New Roman",Font.PLAIN,12));text.insertComponent(time); }else if(id.equals("系统记事本")){try{String command = "notepad.exe";Process child = Runtime.getRuntime().exec(command);//从系统进程中调用记事本}catch (IOException ex) { }}else if(id.equals("系统计算器")){try{String command = "calc.exe";Process child = Runtime.getRuntime().exec(command);//调用系统计算器}catch (IOException ex) { }}else if(id.equals("关于")){about.setSize(250,150);about.show();} } };四、源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;public class Notepad extends JFrame {// 系统组件声明private JMenuBar menuBar = new JMenuBar();private JEditorPane content = new JEditorPane();private JScrollPane scroll = new JScrollPane(content);private JFileChooser filechooser = new JFileChooser() ;private BorderLayout bord = new BorderLayout();private JLabel statusBar = new JLabel();private JPanel pane = new JPanel();private File file = null;// 定义文件菜单private JMenu fileMenu = new JMenu();private JMenuItem newMenuItem = new JMenuItem();private JMenuItem openMenuItem = new JMenuItem();private JMenuItem saveMenuItem = new JMenuItem();private JMenuItem saveAsMenuItem = new JMenuItem();private JMenuItem pageSetupMenuItem = new JMenuItem();private JMenuItem printMenuItem = new JMenuItem();private JMenuItem exitMenuItem = new JMenuItem();// 定义风格菜单private JMenu styleMenu = new JMenu();private ButtonGroup styleMenuGroup = new ButtonGroup();private JRadioButtonMenuItem javaStyleMenuItem = new JRadioButtonMenuItem(); private JRadioButtonMenuItem metalStyleMenuItem = new JRadioButtonMenuItem(); private JRadioButtonMenuItem windowsStyleMenuItem = new JRadioButtonMenuItem();// 定义帮助菜单private JMenuItem aboutMenuItem = new JMenuItem();private JMenuItem helpTopicMenuItem = new JMenuItem();private JMenu helpMenu = new JMenu();// 构造函数public Notepad(){initComponents();}private void initComponents(){// 添加子菜单项到文件菜单fileMenu.setText("\u6587\u4ef6 (F)");newMenuItem.setText("新建(N)Ctrl+N");openMenuItem.setText("打开(O)...Ctrl+O");saveMenuItem.setText("保存(S)Ctrl+S");saveAsMenuItem.setText("另存为(A)...");pageSetupMenuItem.setText("页面设置(U)...");printMenuItem.setText("打印(P)...Ctrl+P");exitMenuItem.setText("退出");fileMenu.add(newMenuItem);fileMenu.add(openMenuItem);fileMenu.add(saveMenuItem);fileMenu.add(saveAsMenuItem);fileMenu.addSeparator();fileMenu.add(pageSetupMenuItem);fileMenu.add(printMenuItem);fileMenu.addSeparator();fileMenu.add(exitMenuItem);// 添加子菜单项到风格菜单styleMenu.setText("风格(S)");javaStyleMenuItem.setText("Java默认");metalStyleMenuItem.setText("Metal风格");windowsStyleMenuItem.setText("Windows风格");styleMenuGroup.add(javaStyleMenuItem);styleMenuGroup.add(metalStyleMenuItem);styleMenuGroup.add(windowsStyleMenuItem);styleMenu.add(javaStyleMenuItem);styleMenu.add(metalStyleMenuItem);styleMenu.add(windowsStyleMenuItem);// 添加子菜单项到帮助菜单helpMenu.setText("帮助(H)");helpTopicMenuItem.setText("帮助主题(H)");aboutMenuItem.setText("关于记事本(A)");helpMenu.add(helpTopicMenuItem);helpMenu.addSeparator();helpMenu.add(aboutMenuItem);// 定义文件菜单下的事件监听newMenuItem.addActionListener(new newMenuItem_actionAdapter(this)); openMenuItem.addActionListener(new openMenuItem_actionAdapter(this)); saveMenuItem.addActionListener(new saveMenuItem_actionAdapter(this)); saveAsMenuItem.addActionListener(new saveAsMenuItem_actionAdapter(this)); pageSetupMenuItem.addActionListener(new pageSetupMenuItem_actionAdapter(this)); printMenuItem.addActionListener(new printMenuItem_actionAdapter(this)); exitMenuItem.addActionListener(new exitMenuItem_actionAdapter(this));// 定义风格菜单下的事件监听javaStyleMenuItem.addActionListener(new javaStyleMenuItem_actionAdapter(this)); metalStyleMenuItem.addActionListener(new metalStyleMenuItem_actionAdapter(this)); windowsStyleMenuItem.addActionListener(new windowsStyleMenuItem_actionAdapter(this));// 定义帮助菜单下的事件监听helpTopicMenuItem.addActionListener(new helpTopicMenuItem_actionAdapter(this));aboutMenuItem.addActionListener(new aboutMenuItem_actionAdapter(this));// 填加菜单到菜单栏menuBar.add(fileMenu);menuBar.add(styleMenu);menuBar.add(helpMenu);// 对主窗口的一些设置this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setTitle("无标题- \u8bb0\u4e8b\u672c");this.setSize(640,480);setJMenuBar(menuBar);pane.setLayout(bord);pane.add("Center",scroll);setContentPane(pane);}// 定义新建菜单项方法public void newMenuItemActionPerformed(ActionEvent evt){file = null;if(!("".equals(content.getText()))){Object[] options = { "是(Y)", "否(N)","取消" };int s = JOptionPane.showOptionDialog(null, "\u6587\u4ef6 "+getTitle()+" \u7684\u6587\u5b57\u5df2\u7ecf\u6539\u53d8\u3002\n\u60f3\u4fdd\u5b58\u6587\u4ef6\u5417\uff 1f", "\u8bb0\u4e8b\u672c",JOptionPane.DEFAULT_OPTION, JOptionPane.W ARNING_MESSAGE,null, options, options[0]);switch(s){case 0:int returnVal=filechooser.showSaveDialog(this);if(returnVal == JFileChooser.APPROVE_OPTION) {file=filechooser.getSelectedFile();try{FileWriter fw=new FileWriter(file);fw.write(content.getText());setTitle(filechooser.getSelectedFile().getName()+" - \u8bb0\u4e8b\u672c");fw.close();}catch(Exception e){e.printStackTrace();}break;}case 1:content.setText("");setTitle("无标题- \u8bb0\u4e8b\u672c");}}}// 定义打开菜单项方法public void openMenuItemActionPerformed(ActionEvent evt){try {file = null;int returnVal = filechooser.showOpenDialog(this);if(returnVal == JFileChooser.APPROVE_OPTION){file = filechooser.getSelectedFile();FileReader fr = new FileReader(file);int len = (int)file.length();char[] buffer = new char[len];fr.read(buffer,0,len);fr.close();content.setText(new String(buffer));}}catch(Exception e){e.printStackTrace();}}// 定义退出菜单项方法public void exitMenuItem_actionPerformed(ActionEvent e){if(!("".equals(content.getText()))){Object[] options = { "是(Y)", "否(N)","取消" };int s = JOptionPane.showOptionDialog(null, "文件的文字已经改变。