记事本
来源:互联网 发布:app软件商店 编辑:程序博客网 时间:2024/06/11 10:00
package notebook;import java.io.File;import java.util.Hashtable;import java.util.Enumeration;import javax.swing.*;import javax.swing.filechooser.*;public class ExampleFileFilter extends FileFilter { private static String TYPE_UNKNOWN = "Type Unknown"; private static String HIDDEN_FILE = "Hidden File"; private Hashtable filters = null; private String description = null; private String fullDescription = null; private boolean useExtensionsInDescription = true; public ExampleFileFilter() {this.filters = new Hashtable(); } public ExampleFileFilter(String extension) {this(extension,null); } public ExampleFileFilter(String extension, String description) {this();if(extension!=null) addExtension(extension); if(description!=null) setDescription(description); } public ExampleFileFilter(String[] filters) {this(filters, null); } public ExampleFileFilter(String[] filters, String description) {this();for (int i = 0; i < filters.length; i++) { // add filters one by one addExtension(filters[i]);} if(description!=null) setDescription(description); } public boolean accept(File f) {if(f != null) { if(f.isDirectory()) {return true; } String extension = getExtension(f); if(extension != null && filters.get(getExtension(f)) != null) {return true; };}return false; } public String getExtension(File f) {if(f != null) { String filename = f.getName(); int i = filename.lastIndexOf('.'); if(i>0 && i<filename.length()-1) {return filename.substring(i+1).toLowerCase(); };}return null; } public void addExtension(String extension) {if(filters == null) { filters = new Hashtable(5);}filters.put(extension.toLowerCase(), this);fullDescription = null; } public String getDescription() {if(fullDescription == null) { if(description == null || isExtensionListInDescription()) { fullDescription = description==null ? "(" : description + " (";// build the description from the extension listEnumeration extensions = filters.keys();if(extensions != null) { fullDescription += "." + (String) extensions.nextElement(); while (extensions.hasMoreElements()) {fullDescription += ", " + (String) extensions.nextElement(); }}fullDescription += ")"; } else {fullDescription = description; }}return fullDescription; } public void setDescription(String description) {this.description = description;fullDescription = null; } public void setExtensionListInDescription(boolean b) {useExtensionsInDescription = b;fullDescription = null; } public boolean isExtensionListInDescription() {return useExtensionsInDescription; }}
package notebook;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import javax.swing.event.*;import javax.print.*;import javax.print.attribute.*;import java.util.*;import java.text.*;public class MyNotebook extends JFrame implements ActionListener { Container con; JScrollPane JSPane; JTextArea text; JMenuBar mainMenuBar; JMenu fileMenu, editMenu, formatMenu, helpMenu; JMenuItem newItem, openItem, saveItem, saveasItem, pageItem, printItem, exitItem; JMenuItem undoItem, cutItem, copyItem, pasteItem, findItem, replaceItem, selectallItem, dateItem; JCheckBoxMenuItem wrapItem; JMenuItem fontItem; JMenuItem helpItem, aboutItem; boolean changed = false; boolean haveName = false; File file = null;//主程序入口 public static void main(String[] args) { MyNotebook notbook = new MyNotebook(); notbook.setVisible(true); }//创建界面、安装各种监听器、 public MyNotebook() { setTitle("记事本 -- 未命名"); con = getContentPane(); text = new JTextArea(); JSPane = new JScrollPane(text); createMenu(); setJMenuBar(mainMenuBar); con.add(JSPane, BorderLayout.CENTER); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width - 800) / 2, (screenSize.height - 600) / 2, 800, 600); }//创建主菜单 public void createMenu() { //创建JMenuBar mainMenuBar = new JMenuBar(); //创建四个JMenu fileMenu = new JMenu("文件"); editMenu = new JMenu("编辑"); formatMenu = new JMenu("格式"); helpMenu = new JMenu("帮助"); //创建JMenuItem并添加到对应的JMenu中 mainMenuBar.add(fileMenu); newItem = new JMenuItem("新建"); openItem = new JMenuItem("打开.."); saveItem = new JMenuItem("保存.."); saveasItem = new JMenuItem("另存为.."); pageItem = new JMenuItem("页面设置.."); printItem = new JMenuItem("打印.."); exitItem = new JMenuItem("退出"); fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(saveasItem); fileMenu.addSeparator(); fileMenu.add(pageItem); fileMenu.add(printItem); fileMenu.addSeparator(); fileMenu.add(exitItem); mainMenuBar.add(helpMenu); helpItem = new JMenuItem("帮助主题"); aboutItem = new JMenuItem("关于.."); helpMenu.add(helpItem); helpMenu.add(aboutItem); exitItem.addActionListener(this); saveItem.addActionListener(this); saveasItem.addActionListener(this); newItem.addActionListener(this); printItem.addActionListener(this); openItem.addActionListener(this); } public void actionPerformed(ActionEvent e) { Object obj; obj = e.getSource(); if (obj == exitItem) { doExit(); } else if (obj == saveItem) { doSave(); } else if (obj == saveasItem) { doSaveAs(); } else if (obj == newItem) { doNewFile(); } else if (obj == openItem) { doOpen(); } }//当用户按下窗口的“关闭”时,会自动调用此方法 protected void processWindowEvent(WindowEvent e) { if (e.getID() == WindowEvent.WINDOW_CLOSING) { doExit(); } }//程序退出时的代码 void doExit() { int select; if (!changed) { System.exit(0); } else { select = JOptionPane.showConfirmDialog(this, "文件修改后尚未存盘,要保存吗?"); switch (select) { case JOptionPane.YES_OPTION: select = doSave(); if (select == 1) { System.exit(0); } break; case JOptionPane.NO_OPTION: System.exit(0); break; case JOptionPane.CANCEL_OPTION: break; } } }//保存用户编辑的文件,保存成功返回1,否则返回0 int doSave() { FileOutputStream fout; byte content[]; int flag; if (!haveName) { flag = doSaveAs(); } else if (changed) { try { fout = new FileOutputStream(file); content = text.getText().getBytes(); fout.write(content); fout.close(); changed = false; JOptionPane.showMessageDialog(this, "保存成功!"); flag = 1; } catch (FileNotFoundException e) { JOptionPane.showMessageDialog(this, "指定的文件名称或属性有问题!"); flag = 0; } catch (IOException e) { JOptionPane.showMessageDialog(this, "无法写文件,请检查文件是否被锁定"); flag = 0; } } else { JOptionPane.showMessageDialog(this, "保存成功,其他情况!"); flag = 1; } return flag; }//用"另存为"对话框保存文件。保存成功返回1,否则返回0 int doSaveAs() { FileOutputStream fout; byte content[]; int flag = 0; File tmpfile = null; ExampleFileFilter filter = new ExampleFileFilter(); JFileChooser chooser; filter.addExtension("txt"); filter.setDescription("文本文件"); if (file != null) { chooser = new JFileChooser(file.getPath()); } else { chooser = new JFileChooser(); } chooser.setFileFilter(filter); flag = chooser.showSaveDialog(this); if (flag == JFileChooser.APPROVE_OPTION) { tmpfile = chooser.getSelectedFile(); if (tmpfile.exists()) { if (JOptionPane.showConfirmDialog(this, "文件已经存在,是否覆盖?", "警告", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { flag = 1; } else { flag = 0; } } else { flag = 1; } } else { flag = 0; } if (flag == 1) {//用户已经确定要以指定名称保存文件 try { fout = new FileOutputStream(tmpfile); content = text.getText().getBytes(); fout.write(content); fout.close(); flag = 1; } catch (FileNotFoundException e) { JOptionPane.showMessageDialog(this, "指定的文件名称或属性有问题!"); flag = 0; } catch (IOException e) { JOptionPane.showMessageDialog(this, "无法写文件,请检查文件是否被锁定"); flag = 0; } } if (flag == 1) {//文件保存成功,修改相关变量 changed = false; haveName = true; file = tmpfile; this.setTitle(file.getName() + " - 记事本"); } return flag; }//新建一个文件 void doNewFile() { int select, flag; if (changed) { select = JOptionPane.showConfirmDialog(this, "文件修改后尚未存盘,要保存吗?"); switch (select) { case JOptionPane.YES_OPTION: flag = doSave(); break; case JOptionPane.NO_OPTION: flag = 1; break; default: flag = 0; break; } } else { flag = 1; } if (flag == 1) { changed = false; haveName = false; setTitle("记事本 -- 未命名"); text.setText(null); } }//打开一个已经存在的文件 void doOpen() { int select, flag; File tmpfile = null; ExampleFileFilter filter; JFileChooser chooser; FileInputStream fin; byte buf[]; if (changed) { select = JOptionPane.showConfirmDialog(this, "文件修改后尚未存盘,要保存吗?"); switch (select) { case JOptionPane.YES_OPTION: flag = doSave(); break; case JOptionPane.NO_OPTION: flag = 1; break; default: flag = 0; break; } } else { flag = 1; } if (flag == 1) { changed = false; filter = new ExampleFileFilter(); filter.addExtension("txt"); filter.setDescription("文本文件"); if (file != null) { chooser = new JFileChooser(file.getPath()); } else { chooser = new JFileChooser(); } chooser.setFileFilter(filter); select = chooser.showOpenDialog(this); if (select == JFileChooser.APPROVE_OPTION) { tmpfile = chooser.getSelectedFile(); try { fin = new FileInputStream(tmpfile); buf = new byte[(int) tmpfile.length()]; fin.read(buf); fin.close(); text.setText(new String(buf)); changed = false; haveName = true; file = tmpfile; setTitle("记事本 -- " + file.getName()); } catch (FileNotFoundException e) { JOptionPane.showMessageDialog(this, "指定的文件名称或属性有问题!"); } catch (IOException e) { JOptionPane.showMessageDialog(this, "无法读文件,请检查文件是否被锁定"); } } } }}
0 0
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- Linux权限管理
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结
- 算术平均数、几何平均数、
- Gauge中Gradle自定义Task失败的解决方法
- 面向对象静态代码块
- 记事本
- 1
- leetcode [Merge Sorted Array]
- YUV转RBG
- 工业控制系统
- 2
- 黑苹果引导工具 Clover 配置详解及Clover Configurator使用
- 《ACM程序设计》书中题目P(会贿赂猫的胖老鼠)
- React学习之条件视图渲染(六)