主页 > 互联网  > 

综合实验电子记事本的设计与实现——Java

综合实验电子记事本的设计与实现——Java
综合实验 电子记事本的设计与实现

文章目录 综合实验 电子记事本的设计与实现一、实验目的二、实验内容三、实验要求四、实验步骤与结果1.创建菜单栏、菜单项和文本域2.txt文件过滤器3.创建方法实现添加菜单和菜单项4.初始化文本域5.添加菜单到菜单栏6.添加菜单项1)文件a.新建b.打开c.保存d.另存为e.在退出前添加分割符f.退出 2)编辑a.复制b.剪切c.粘贴 3)格式a.字体b.字体颜色 4)关于 7.主方法创建对象8.完整代码如下

一、实验目的

掌握用户图形界面设计(GUI)的设计方法,了解布局管理器的知识,了解树形分层结构,掌握Java中的控件的使用。

二、实验内容

利用Java中的用户GUI图形界面设计、文件操作、数据库编程等方面的知识,实现电子记事本的设计与实现。

三、实验要求

(1)该实验应能体现本课程中的综合知识; (2)该电子记事本应具有实用性。 (3)界面友好,操作简单。

四、实验步骤与结果 1.创建菜单栏、菜单项和文本域 private JMenuBar menuBar;//菜单栏 private JTextArea textArea = new JTextArea();//文本域 private JMenu wenjian,bianji,geshi,guanyu;//文件,编辑,格式,关于 //文件菜单项 private JMenuItem wenjian_open,wenjian_save,wenjian_new,wenjian_other_save, wenjian_exit;//打开,保存,新建,另存,退出 //编辑菜单项 private JMenuItem bianji_copy,bianji_cut,bianji_paste;//复制,剪切,粘贴 //字体菜单项 private JMenuItem geshi_font,geshi_font_color;//字体,字体颜色 //关于菜单项 private JMenuItem guanyu_about;//关于 2.txt文件过滤器

选取目录中的txt文件

/** * txt文件过滤器 */ public class FileFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter { @Override public boolean accept(File file) { if(file.isDirectory()) return true; else{ String name = file.getName(); if(name.endsWith(".txt")) return true; else return false; } } @Override public String getDescription() { return ".txt"; } } 3.创建方法实现添加菜单和菜单项 //添加菜单 public JMenu addJManu(String name,JMenuBar menuBar){ JMenu jMenu = new JMenu(name); menuBar.add(jMenu); return jMenu; } //添加菜单项 public JMenuItem addJmenuItem(String name,JMenu menu){ JMenuItem jMenuItem = new JMenuItem(name); menu.add(jMenuItem); return jMenuItem; } 4.初始化文本域 setTitle("MyNotePad"); setBounds(300,300,600,600); menuBar = new JMenuBar(); this.setJMenuBar(menuBar); textArea.getDocument();//获得程序当前有效文档 textArea.setFont(new Font("楷体",Font.PLAIN,14));//字体 textArea.setSelectedTextColor(Color.red);//选中字体颜色 textArea.setCaretColor(Color.BLACK);//光标颜色 textArea.setWrapStyleWord(true);//是否单词边界换行 textArea.setLineWrap(true);//是否换行 add(new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)); 5.添加菜单到菜单栏 wenjian = this.addJManu("文件(F)",menuBar); bianji = this.addJManu("编辑(E)",menuBar); geshi = this.addJManu("格式(O)",menuBar); guanyu = this.addJManu("关于",menuBar); 6.添加菜单项 1)文件 a.新建 //新建 wenjian_new = this.addJmenuItem("新建(N) Ctrl+N",wenjian); wenjian_new.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //设置新文件内容 textArea.setText(""); } }); b.打开 //打开 wenjian_open = this.addJmenuItem("打开(O) Ctrl+O",wenjian); wenjian_open.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try{ //设置当前目录 jFileChooser.setCurrentDirectory(new File(".")); jFileChooser.setFileFilter(new FileFilter());//过滤文件 jFileChooser.setAcceptAllFileFilterUsed(false);//全选文件 //弹出一个 "Open File" 文件选择器对话框。 jFileChooser.showOpenDialog(null); file = jFileChooser.getSelectedFile();//获取已选择目录 str = file.getName();//获取目录命 int len = (int)(jFileChooser.getSelectedFile()).length(); char[] ch = new char[len]; FileReader fileReader = new FileReader(file); fileReader.read(ch); str = new String(ch); textArea.setText(str.trim()); } catch (FileNotFoundException fileNotFoundException) { //fileNotFoundException.printStackTrace(); JOptionPane.showMessageDialog(null, fileNotFoundException); } catch (IOException ioException) { //ioException.printStackTrace(); JOptionPane.showMessageDialog(null, ioException); } } }); c.保存

1.先判断该文件是否存在,如果不存在直接新建目录保存;如果已经存在,直接保存。 2.使用文件过滤器,使文件必须为.txt文件。

//保存 wenjian_save = this.addJmenuItem("保存(S) Ctrl+S",wenjian); wenjian_save.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //判断当前文件是否存在 if(file == null){//不存在,新建目录 try{ jFileChooser = new JFileChooser(); jFileChooser.setCurrentDirectory(null);//设置当前目录 str = JOptionPane.showInputDialog("输入文件名")+".txt"; jFileChooser.setSelectedFile(new File(str)); jFileChooser.setFileFilter(new FileFilter());//过滤文件 //获取当前对象x int temp = jFileChooser.showSaveDialog(null); if (temp == jFileChooser.APPROVE_OPTION) {//temp = 0 if(file != null) file.delete(); file = new File(jFileChooser.getCurrentDirectory(),str); file.createNewFile(); FileWriter fileWriter = new FileWriter(file); fileWriter.write(textArea.getText()); fileWriter.close(); } } catch (Exception e1){ JOptionPane.showMessageDialog(null, e1); } } else{ try{ FileWriter fileWriter = new FileWriter(file); fileWriter.write(textArea.getText()); fileWriter.close(); } catch (Exception e1){ JOptionPane.showMessageDialog(null, e1); } } } }); d.另存为

另存和保存的步骤基本一致。

//另存为 wenjian_other_save = this.addJmenuItem("另存为",wenjian); wenjian_other_save.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jFileChooser = new JFileChooser(); jFileChooser.setCurrentDirectory(new File("."));//设置当前目录 try{ if(file == null) str = JOptionPane.showInputDialog("输入文件名")+".txt"; else str = file.getName(); jFileChooser.setSelectedFile(new File(str)); jFileChooser.setFileFilter(new FileFilter());//过滤文件 int temp = jFileChooser.showSaveDialog(null);//获取当前对象 if (temp == jFileChooser.APPROVE_OPTION) {//temp = 0 if(file != null) file.delete(); file = new File(jFileChooser.getCurrentDirectory(),str); file.createNewFile(); FileWriter fileWriter = new FileWriter(file); fileWriter.write(textArea.getText()); fileWriter.close(); } } catch (Exception e1){ JOptionPane.showMessageDialog(null, e1); } } }); e.在退出前添加分割符 //在退出前添加分割符 wenjian.addSeparator(); f.退出 //退出 wenjian_exit = this.addJmenuItem("退出(X)",wenjian); wenjian_exit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int state = JOptionPane.showConfirmDialog (myNotePad, "请确定是否退出?"); if (state == JOptionPane.OK_OPTION)//OK_OPTION==0 System.exit(0); } }); 2)编辑 a.复制 //复制 bianji_copy = this.addJmenuItem("复制(C) Ctrl+C",bianji); bianji_copy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textArea.copy(); } }); b.剪切 //剪切 bianji_cut = this.addJmenuItem("剪切(T) Ctrl+X",bianji); bianji_cut.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textArea.cut(); } }); c.粘贴 //粘贴 bianji_paste = this.addJmenuItem("粘贴(P) Ctrl+V",bianji); bianji_paste.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textArea.paste(); } }); 3)格式 a.字体 //字体 geshi_font = this.addJmenuItem("字体",geshi); geshi_font.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //获取图形环境 GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment(); JList fontNames = new JList(graphicsEnvironment.getAvailableFontFamilyNames()); int sele = JOptionPane.showConfirmDialog (null,new JScrollPane(fontNames),"请选择",JOptionPane.OK_CANCEL_OPTION); Object seleFont = fontNames.getSelectedValue(); if(sele == JOptionPane.OK_OPTION && seleFont != null) textArea.setFont(new Font(fontNames.getSelectedValue() .toString(),Font.PLAIN,14)); } }); b.字体颜色 //字体颜色 geshi_font_color = this.addJmenuItem("颜色",geshi); geshi_font_color.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Color color = JColorChooser.showDialog(null,"颜色选择", Color.BLACK); textArea.setForeground(color); } }); 4)关于 //关于 guanyu_about = this.addJmenuItem("关于MyNotePad",guanyu); guanyu_about.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null,"MyNotePad\n开发者: 【信计2102——子麟】", "关于",JOptionPane.PLAIN_MESSAGE); } }); 7.主方法创建对象 public static void main(String[] args) { new MyNotePad().setVisible(true);//设置窗体可见 } 8.完整代码如下 package NotePad; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; public class MyNotePad extends JFrame { private JMenuBar menuBar; private JTextArea textArea = new JTextArea(); private JMenu wenjian,bianji,geshi,guanyu;//文件,编辑,格式,关于 private JMenuItem wenjian_open,wenjian_save,wenjian_new, wenjian_other_save,wenjian_exit;//打开,保存,新建,另存,退出 private JMenuItem bianji_copy,bianji_cut,bianji_paste;//复制,剪切,粘贴 private JMenuItem geshi_font,geshi_font_color;//字体 private JMenuItem guanyu_about;//关于 private JFileChooser jFileChooser = new JFileChooser(); private File file; private String str = ""; /** * txt文件过滤器 */ public class FileFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter { @Override public boolean accept(File file) { if(file.isDirectory()) return true; else{ String name = file.getName(); if(name.endsWith(".txt")) return true; else return false; } } @Override public String getDescription() { return ".txt"; } } //添加菜单 public JMenu addJManu(String name,JMenuBar menuBar){ JMenu jMenu = new JMenu(name); menuBar.add(jMenu); return jMenu; } //添加菜单项 public JMenuItem addJmenuItem(String name,JMenu menu){ JMenuItem jMenuItem = new JMenuItem(name); menu.add(jMenuItem); return jMenuItem; } //初始化 MyNotePad myNotePad; { Container contentPane = getContentPane(); setTitle("MyNotePad"); setBounds(300,300,600,600); menuBar = new JMenuBar(); this.setJMenuBar(menuBar); textArea.getDocument();//获得程序当前有效文档 textArea.setFont(new Font("楷体",Font.PLAIN,14));//字体 textArea.setSelectedTextColor(Color.red);//选中字体颜色 textArea.setCaretColor(Color.BLACK);//光标颜色 textArea.setWrapStyleWord(true);//是否单词边界换行 textArea.setLineWrap(true);//是否换行 add(new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)); //添加菜单到菜单栏 wenjian = this.addJManu("文件(F)",menuBar); bianji = this.addJManu("编辑(E)",menuBar); geshi = this.addJManu("格式(O)",menuBar); guanyu = this.addJManu("关于",menuBar); /** * 文件 */ //新建 wenjian_new = this.addJmenuItem("新建(N) Ctrl+N",wenjian); wenjian_new.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //设置新文件内容 textArea.setText(""); } }); //打开 wenjian_open = this.addJmenuItem("打开(O) Ctrl+O",wenjian); wenjian_open.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try{ //设置当前目录 jFileChooser.setCurrentDirectory(new File(".")); jFileChooser.setFileFilter(new FileFilter());//过滤文件 jFileChooser.setAcceptAllFileFilterUsed(false);//全选文件 //弹出一个 "Open File" 文件选择器对话框。 jFileChooser.showOpenDialog(null); file = jFileChooser.getSelectedFile();//获取已选择目录 str = file.getName();//获取目录命 int len = (int)(jFileChooser.getSelectedFile()).length(); char[] ch = new char[len]; FileReader fileReader = new FileReader(file); fileReader.read(ch); str = new String(ch); textArea.setText(str.trim()); } catch (FileNotFoundException fileNotFoundException) { //fileNotFoundException.printStackTrace(); JOptionPane.showMessageDialog(null, fileNotFoundException); } catch (IOException ioException) { //ioException.printStackTrace(); JOptionPane.showMessageDialog(null, ioException); } } }); //保存 wenjian_save = this.addJmenuItem("保存(S) Ctrl+S",wenjian); wenjian_save.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //判断当前文件是否存在 if(file == null){//不存在,新建目录 try{ jFileChooser = new JFileChooser(); jFileChooser.setCurrentDirectory(null);//设置当前目录 str = JOptionPane.showInputDialog("输入文件名")+".txt"; jFileChooser.setSelectedFile(new File(str)); jFileChooser.setFileFilter(new FileFilter());//过滤文件 //获取当前对象 int temp = jFileChooser.showSaveDialog(null); if (temp == jFileChooser.APPROVE_OPTION) {//temp = 0 if(file != null) file.delete(); file = new File(jFileChooser.getCurrentDirectory(),str); file.createNewFile(); FileWriter fileWriter = new FileWriter(file); fileWriter.write(textArea.getText()); fileWriter.close(); } } catch (Exception e1){ JOptionPane.showMessageDialog(null, e1); } } else{ try{ FileWriter fileWriter = new FileWriter(file); fileWriter.write(textArea.getText()); fileWriter.close(); } catch (Exception e1){ JOptionPane.showMessageDialog(null, e1); } } } }); //另存为 wenjian_other_save = this.addJmenuItem("另存为",wenjian); wenjian_other_save.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jFileChooser = new JFileChooser(); jFileChooser.setCurrentDirectory(new File("."));//设置当前目录 try{ if(file == null) str = JOptionPane.showInputDialog("输入文件名")+".txt"; else str = file.getName(); jFileChooser.setSelectedFile(new File(str)); jFileChooser.setFileFilter(new FileFilter());//过滤文件 int temp = jFileChooser.showSaveDialog(null);//获取当前对象 if (temp == jFileChooser.APPROVE_OPTION) {//temp = 0 if(file != null) file.delete(); file = new File(jFileChooser.getCurrentDirectory(),str); file.createNewFile(); FileWriter fileWriter = new FileWriter(file); fileWriter.write(textArea.getText()); fileWriter.close(); } } catch (Exception e1){ JOptionPane.showMessageDialog(null, e1); } } }); //在退出前添加分割符 wenjian.addSeparator(); //退出 wenjian_exit = this.addJmenuItem("退出(X)",wenjian); wenjian_exit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int state = JOptionPane.showConfirmDialog (myNotePad, "请确定是否退出?"); if (state == JOptionPane.OK_OPTION)//OK_OPTION==0 System.exit(0); } }); /** * 编辑 */ //复制 bianji_copy = this.addJmenuItem("复制(C) Ctrl+C",bianji); bianji_copy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textArea.copy(); } }); //剪切 bianji_cut = this.addJmenuItem("剪切(T) Ctrl+X",bianji); bianji_cut.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textArea.cut(); } }); //粘贴 bianji_paste = this.addJmenuItem("粘贴(P) Ctrl+V",bianji); bianji_paste.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textArea.paste(); } }); /** * 格式 */ //字体 geshi_font = this.addJmenuItem("字体",geshi); geshi_font.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //获取图形环境 GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment(); JList fontNames = new JList(graphicsEnvironment.getAvailableFontFamilyNames()); int sele = JOptionPane.showConfirmDialog(null, new JScrollPane(fontNames), "请选择",JOptionPane.OK_CANCEL_OPTION); Object seleFont = fontNames.getSelectedValue(); if(sele == JOptionPane.OK_OPTION && seleFont != null) textArea.setFont(new Font(fontNames.getSelectedValue().toString(),Font.PLAIN,14)); } }); //字体颜色 geshi_font_color = this.addJmenuItem("颜色",geshi); geshi_font_color.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Color color = JColorChooser.showDialog(null,"颜色选择", Color.BLACK); textArea.setForeground(color); } }); /** * 关于 */ //关于 guanyu_about = this.addJmenuItem("关于MyNotePad",guanyu); guanyu_about.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "MyNotePad\n开发者:【信计2102——子麟】", "关于",JOptionPane.PLAIN_MESSAGE); } }); this.setResizable(true); // 窗体是否可变 } public static void main(String[] args) { new MyNotePad().setVisible(true);//设置窗体可见 } }

Ps:仅供参考!

标签:

综合实验电子记事本的设计与实现——Java由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“综合实验电子记事本的设计与实现——Java