简单记事本的实现(swing技术)
来源:互联网 发布:皮蓬季后赛数据 编辑:程序博客网 时间:2024/05/17 22:34
package homework;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter; public class Notepad extends JFrame implements ActionListener{ //记事本中,显示信息的文本框 private JTextArea jtaText = new JTextArea(); //记录打开的文件的所在位置 private String filename = null; public Notepad(String name) { //指定窗口的名称 super(name); //实现记事本中的菜单 //创建一个菜单栏对象 JMenuBar bar = new JMenuBar(); //创建菜单 JMenu file = new JMenu("文件"); JMenu help = new JMenu("帮助"); //创建菜单项并注册每项的监听 JMenuItem file_new = new JMenuItem("新建"); file_new.addActionListener(this); JMenuItem file_open = new JMenuItem("打开"); file_open.addActionListener(this); JMenuItem file_save = new JMenuItem("保存"); file_save.addActionListener(this); JMenuItem file_saveas = new JMenuItem("另存为"); file_saveas.addActionListener(this); JMenuItem file_exit = new JMenuItem("退出"); file_exit.addActionListener(this); JMenuItem help_about = new JMenuItem("关于"); help_about.addActionListener(this); //将菜单项添加到菜单中 file.add(file_new); file.add(file_open); file.add(file_save); file.add(file_saveas); file.addSeparator();//添加分隔符 file.add(file_exit); help.add(help_about); //将菜单添加到菜单栏 bar.add(file); JSeparator sep = new JSeparator(SwingConstants.VERTICAL);//定义一个垂直的分隔符 bar.add(help); bar.add(sep);//将分隔符添加 //将菜单栏添加到窗体中 this.setJMenuBar(bar); //获得窗体的默认容器 Container c = this.getContentPane(); //默认该容器是BordLayout布局管理 c.add(jtaText); //设置窗体的大小 this.setSize(800, 600); //获得屏幕的信息 Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); //设置窗体启动,初始位置为屏幕中间 this.setLocation(((int)dim.getWidth() - 800)/2, ((int)dim.getHeight() - 600)/2); //实现窗体关闭按钮 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体可见 this.setVisible(true); } /** * 事件处理 * 重写方法 * @param e 发生事件时,自动生成的事件对象 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent e) { //得到事件源的名称 String command = e.getActionCommand(); if("新建".equals(command)) { //相当于清空显示框 this.jtaText.setText(""); } else if("打开".equals(command)) { //创建一个文件选择器对象 JFileChooser jfc = new JFileChooser(); //显示文件选择器,选择文件。如果选择了打开,则返回,该对话框的父组件为this int flag = jfc.showOpenDialog(this); if(flag == JFileChooser.APPROVE_OPTION) { //获得选择的文件,返回选中的文件 File f = jfc.getSelectedFile(); //得到选择的文件的绝对路径 filename = f.getAbsolutePath(); //读取文件的内容,放入显示框 FileReader fr = null; BufferedReader br = null; try { fr = new FileReader(f); br = new BufferedReader(fr); //暂时存放读取的文件的内容 StringBuffer sb = new StringBuffer(); String str = ""; while((str = br.readLine()) != null) { sb.append(str); sb.append("\n"); } //将读取的信息放入文本显示区域 this.jtaText.setText(sb.toString()); //标题栏显示文件的绝对路径 this.setTitle("记事本" + filename); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } finally { try { br.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } else if("保存".equals(command)) { try { save(filename); } catch (IOException e1) { e1.printStackTrace(); } } else if("另存为".equals(command)) { //创建一个文件选择器对象 JFileChooser jfc = new JFileChooser(); //显示文件选择器,选择文件。如果选择了保存,则返回,该对话框的父组件为this int flag = jfc.showSaveDialog(this); if(flag == JFileChooser.APPROVE_OPTION) { File f = jfc.getSelectedFile(); //写入文件 try { save(f.getAbsolutePath()); } catch (IOException e1) { e1.printStackTrace(); } } } else if("退出".equals(command)) { //JOptionPane 有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。 int flag = JOptionPane.showConfirmDialog(this, "确定要退出吗?"); if(JOptionPane.YES_OPTION == flag) { //保存 try { save(filename); } catch (IOException e1) { e1.printStackTrace(); } this.dispose(); System.exit(0); } else if(JOptionPane.NO_OPTION == flag) { this.dispose(); System.exit(0); } else if(JOptionPane.CANCEL_OPTION == flag) { return; } } else if("关于".equals(command)) { final JDialog dialog = new JDialog(this, "关于", true); dialog.setSize(400, 80); JLabel lbl = new JLabel("记事本程序 - 作者:jack"); lbl.setFont(new Font("Default", Font.BOLD, 28)); dialog.add(lbl); dialog.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { dialog.dispose();// System.exit(0); } }); dialog.setVisible(true); } } /** * 实现保存的方法 * <一句话功能简述> * <功能详细描述> * @throws IOException * @see [类、类#方法、类#成员] */ private void save(String filename) throws IOException { if(filename != null) { //创建文件对象 ,用于写入字符流对象,带缓冲区的字符输出流对象 File f = new File(filename); FileWriter fw = null; BufferedWriter bw = null; PrintWriter pw = null; fw = new FileWriter(f); bw = new BufferedWriter(fw); //实例化打印流,指向系统中一个具体的文件 pw = new PrintWriter(bw); pw.print(this.jtaText.getText()); pw.flush(); pw.close(); } } public static void main(String[] args) { new Notepad("记事本"); } }
- 简单记事本的实现(swing技术)
- Java的Swing实现一个简单记事本
- Java Swing实现的简单记事本
- 使用JAVA swing实现简单的记事本
- 【swing】简单记事本的开发
- swing应用-简单记事本
- Swing实现记事本
- java Swing 实现记事本
- swing写的记事本
- swing写的记事本
- 用Java swing制作简单记事本
- java实现的简单记事本程序
- 用java实现简单记事本的编写
- 自定义View 实现简单的记事本外观
- 简单记事本的实现(JAVA)
- Qt实现简单记事本
- Java简单记事本实现
- 记事本简单实现思路
- 【MVC系列解决方案】MVC中如何自定义二级域名
- 七大感触——You Only Live Once
- VMware Linux下挂接U盘
- java操作符说明
- stl container 比较。太大了。分开列了。
- 简单记事本的实现(swing技术)
- obj-c取控件的值value
- Linux 下的多线程编程
- find,grep使用心得
- 菜鸟在ACM的成长 身份证验证代码
- Google+和Google Now Listview滑动特效
- 分治法
- objective-c UIImageView 操作
- CSS自定义滚动条样式