package cn325; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class NotePad extends JFrame implements ActionListener { /** * * @param args */ private JMenuBar jmb; private JMenu menu1, menu2, menu3, menu4, menu5; private JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6, jmi7; private JToolBar jtb; private JToolBar jtb1; private JLabel jl; private JButton bu1, bu2, bu3, bu4, bu5; private JTextArea jta; private JScrollPane jsp; // 构造函数 用来初始化 public NotePad() { // 初始化 jmb = new JMenuBar();// 菜单栏 menu1 = new JMenu("文件F");// 各个菜单 //设置助记符 menu1.setMnemonic('F'); menu2 = new JMenu("编辑E"); menu3 = new JMenu("格式O"); menu4 = new JMenu("查看V"); menu5 = new JMenu("帮助H"); // 菜单项 jmi1 = new JMenuItem("新建 (N) Ctrl+N",new ImageIcon("image\\打开.jpg")); jmi1.addActionListener(this);// 添加监听 jmi1.setActionCommand("新建");// 设置监听的命令 jmi2 = new JMenuItem("打开 (O) Ctrl+O",new ImageIcon("image\\打开.jpg")); jmi2.addActionListener(this); jmi2.setActionCommand("打开"); jmi3 = new JMenuItem("保存 (S) Ctro+S",new ImageIcon("image\\打开.jpg")); jmi3.addActionListener(this); jmi3.setActionCommand("保存"); jmi4 = new JMenuItem("另存为(A) ",new ImageIcon("image\\打开.jpg")); jmi4.addActionListener(this); jmi4.setActionCommand("另存为"); jmi5 = new JMenuItem("页面设置 "); jmi6 = new JMenuItem("打印 (P) Ctrl+P"); jmi7 = new JMenuItem("退出 (X) "); jmi7.addActionListener(this); jmi7.setActionCommand("退出"); // 工具栏 jtb = new JToolBar(); jl = new JLabel(new ImageIcon("image/JPanel.jpg")); jtb1 = new JToolBar(); jtb1.add(jl); // 不可移动 jtb.setFloatable(false); jtb1.setFloatable(false); // 按钮 bu1 = new JButton("打开"); bu1.setToolTipText("用来打开文件"); bu1.addActionListener(this); bu1.setActionCommand("打开"); bu2 = new JButton("保存"); bu2.setToolTipText("保存到当前文件中"); bu3 = new JButton("剪切"); bu3.setToolTipText("剪切选中到剪切板"); bu4 = new JButton("复制"); bu4.setToolTipText("复制选中到剪切板"); bu5 = new JButton("粘贴"); bu5.setToolTipText("粘贴剪切板中的内容到当前文件"); // 多行文本输入框 jta = new JTextArea(); // 滚动条 jsp = new JScrollPane(jta); // 菜单栏添加菜单项 jmb.add(menu1); jmb.add(menu2); jmb.add(menu3); jmb.add(menu4); jmb.add(menu5); // 将菜单项添加到菜单 menu1.add(jmi1); menu1.add(jmi2); menu1.add(jmi3); menu1.add(jmi4); menu1.addSeparator(); menu1.add(jmi5); menu1.add(jmi5); menu1.addSeparator(); menu1.add(jmi6); menu1.add(jmi7); // 工具栏添加按钮 jtb.add(bu1); jtb.add(bu2); jtb.add(bu3); jtb.add(bu4); this.setJMenuBar(jmb); this.add(jtb, BorderLayout.NORTH); this.add(jsp, BorderLayout.CENTER); this.add(jtb1, BorderLayout.SOUTH); // 设置基本属性 this.setTitle("我 的 记 事 本 ");//设置名字 this.setSize(600, 500);//设置大小 this.setLocationRelativeTo(null);//设置出现位置 居中 this.setCursor(Cursor.getPredefinedCursor(HAND_CURSOR));//设置当鼠标移动到此处时为手型 this.setIconImage(new ImageIcon("image\\张杰.jpg").getImage()); this.setDefaultCloseOperation(3); this.setVisible(true); } public static void main(String[] args) { NotePad nb = new NotePad(); } @Override public void actionPerformed(ActionEvent e) { // 判断 if(e.getActionCommand().equals("新建")){ jta.setText(null); } else if (e.getActionCommand().equals("打开")) { // 文件选择窗体 JFileChooser fc1 = new JFileChooser(); // 设置名字 此举要在显示对话框设置为默认属性前 fc1.setDialogTitle("打开文件"); //创建文件选择器对象 FileNameExtensionFilter filter=new FileNameExtensionFilter("文本文件(*.txt)", "txt"); //添加文件过滤器 fc1.setFileFilter(filter); // 显示出来 fc1.setVisible(true); //定义一个返回的值 int returnVal=fc1.showOpenDialog(null); //如果选中了文件 就进行下一步 if( returnVal==JFileChooser.APPROVE_OPTION ){ // 获得选中的文件的全路径 String filepath = fc1.getSelectedFile().getAbsolutePath(); // 创建字符输出流对象 FileReader fr = null; BufferedReader br = null; try { // 初始化输出流对象 fr = new FileReader(filepath); br = new BufferedReader(fr); String s = ""; String allCon = null; while ((s = br.readLine()) != null) { allCon += s + "\r\n"; } jta.setText(allCon); } catch (Exception e1) { e1.printStackTrace(); } finally { try { br.close(); fr.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } else if (e.getActionCommand().equals("另存为")) { // 创建一个文件选择窗体 JFileChooser fc2 = new JFileChooser(); // 设置显示的对话框的名字 fc2.setDialogTitle("另存为"); //创建文件选择器对象 FileNameExtensionFilter filter=new FileNameExtensionFilter(null, ".txt"); //添加文件过滤器 fc2.setFileFilter(filter); // 设置可见 fc2.setVisible(true); //定义一个返回的值 int returnVal=fc2.showSaveDialog(null); //如果选中了文件 就进行下一步 if(returnVal==JFileChooser.APPROVE_OPTION){ //取得选中文件的绝对路径 String filepath = fc2.getSelectedFile().getAbsolutePath(); // 创建字符流输出对象 FileWriter fw = null; BufferedWriter bw = null; try { fw = new FileWriter(filepath); bw = new BufferedWriter(fw); bw.write(jta.getText()); } catch (IOException e1) { e1.printStackTrace(); } finally { try { bw.close(); fw.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } else if(e.getActionCommand().equals("退出")){ System.exit(0); } } }
代码可能有点烂,还没有将一些组件重写,进行简单封装,只是将基本的组件写到同一个类中。