首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java的记事簿 实现了记录关闭时的尺寸大小

2012-11-09 
Java的记事本 实现了记录关闭时的尺寸大小第一个类:package notepadimport java.awt.Dimensionimport ja

Java的记事本 实现了记录关闭时的尺寸大小
第一个类:

package notepad;import java.awt.Dimension;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Properties;/** * 用于存储记事本尺寸大小的类 只是利用了文件的读写操作 对properties文件的操作 * */public class NotePadSize{private File file;private Properties p;String w, h;public NotePadSize(){w = new String();h = new String();w = "400";h = "400";file = new File("G:\\3.6\\5.1\\src\\notepad\\size.properties");p = new Properties();}/** * 从本地文件中读取上次的记事本的长宽 *  * @throws IOException * */protected void ReadSize() throws IOException{FileInputStream reader;reader = new FileInputStream(file);p.load(reader);// 读取长宽this.w = p.getProperty("width");this.h = p.getProperty("height");reader.close();}/** * 存储记事本的长宽 *  * @throws IOException * */protected void SaveSize() throws IOException{FileOutputStream save;save = new FileOutputStream(file);p.setProperty("width", w);p.setProperty("height", h);p.store(save, "");save.close();}/** * 获取长宽 *  * @throws IOException * */public Dimension getSize() throws IOException{ReadSize();Dimension size = new Dimension(Integer.parseInt(this.w),Integer.parseInt(this.h));return size;}/** * 设置长宽,并保存 *  * @throws IOException * */public void setSize(Dimension Size) throws IOException{this.w = String.valueOf(Size.width);this.h = String.valueOf(Size.height);SaveSize();}}


第二个类:
package notepad;import java.awt.Dimension;import java.awt.FileDialog;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTextArea;/** * 记事本beta 1.1.0版本 最新功能:实现了记事本的尺寸记录功能 * */@SuppressWarnings("serial")public class NotePad extends JFrame implements WindowListener{private JScrollPane txtJs;private JTextArea txtArea;private JMenuBar jm;private JMenu file, edit, format, help;private JMenuItem file_new, file_open, file_save, exit;private JMenuItem edit_cut, edit_copy, edit_paste, edit_find,edit_selectAll;private JCheckBoxMenuItem format_wrap;private JMenuItem help_issue;private JPopupMenu jpm;private JMenuItem jp_cut, jp_copy, jp_paste, jp_selectAll;private FileDialog openFileDialog, saveFileDialog;private NotePadSize size;private Dimension NotePadDimension;public NotePad() throws IOException{super("NotePad");jm = new JMenuBar();file = new JMenu("文件(F)");edit = new JMenu("编辑(E)");format = new JMenu("格式(O)");help = new JMenu("帮助(H)");// 文件菜单的实例化file_new = new JMenuItem("新建(N)");file_open = new JMenuItem("打开(O)");file_save = new JMenuItem("保存(S)");exit = new JMenuItem("退出(X)");file.add(file_new);file.add(file_open);file.add(file_save);file.addSeparator();file.add(exit);// 编辑菜单的实例化edit_cut = new JMenuItem("剪切");edit_copy = new JMenuItem("复制");edit_paste = new JMenuItem("粘贴");edit_find = new JMenuItem("查找");edit_selectAll = new JMenuItem("全选");edit.add(edit_cut);edit.add(edit_copy);edit.add(edit_paste);edit.addSeparator();edit.add(edit_find);edit.addSeparator();edit.add(edit_selectAll);// 格式菜单的实例化format_wrap = new JCheckBoxMenuItem("自动换行");format.add(format_wrap);// 帮助菜单的实例化help_issue = new JMenuItem("关于记事本");help.add(help_issue);// 添加添加右键弹出式菜单jpm = new JPopupMenu();jp_cut = new JMenuItem("剪切");jp_copy = new JMenuItem("复制");jp_paste = new JMenuItem("粘贴");jp_selectAll = new JMenuItem("全选");jpm.add(jp_cut);jpm.add(jp_copy);jpm.add(jp_paste);jpm.addSeparator();jpm.add(jp_selectAll);// 注册组件监听file_new.addActionListener(new NotePadActionListener());file_open.addActionListener(new NotePadActionListener());file_save.addActionListener(new NotePadActionListener());exit.addActionListener(new NotePadActionListener());edit_cut.addActionListener(new NotePadActionListener());edit_copy.addActionListener(new NotePadActionListener());edit_paste.addActionListener(new NotePadActionListener());edit_find.addActionListener(new NotePadActionListener());edit_selectAll.addActionListener(new NotePadActionListener());format_wrap.addActionListener(new NotePadActionListener());help_issue.addActionListener(new NotePadActionListener());jp_cut.addActionListener(new NotePadActionListener());jp_copy.addActionListener(new NotePadActionListener());jp_paste.addActionListener(new NotePadActionListener());jp_selectAll.addActionListener(new NotePadActionListener());// 实例化对话框openFileDialog = new FileDialog(this, "打开文件", FileDialog.LOAD);saveFileDialog = new FileDialog(this, "保存文件", FileDialog.SAVE);jm.add(file);jm.add(edit);jm.add(format);jm.add(help);setJMenuBar(jm);txtArea = new JTextArea();// 使用匿名内部内,为textArea添加鼠标监听txtArea.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){if (e.getButton() == MouseEvent.BUTTON3){jpm.show(e.getComponent(), e.getX(), e.getY());}}});txtJs = new JScrollPane(txtArea);add(txtJs);size = new NotePadSize();// 添加窗口事件,记录窗口的大小尺寸addWindowListener(this);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);NotePadDimension = new Dimension(size.getSize());setSize(NotePadDimension);// 让窗体居中显示setLocation(getToolkit().getScreenSize().width / 2- NotePadDimension.width / 2,getToolkit().getScreenSize().height / 2- NotePadDimension.height / 2);setVisible(true);}// ///////Main method////////////public static void main(String[] args) throws IOException{new NotePad();}// /////内部类,用于处理事件//////////class NotePadActionListener implements ActionListener{public void actionPerformed(ActionEvent e){Object o = e.getSource();if (o == file_new){ // 新建文件txtArea.setText("");}if (o == file_open){// 打开文件openFileDialog.setVisible(true);String name = openFileDialog.getDirectory()+ openFileDialog.getFile();OpenFile(name);}if (o == file_save){// 保存文件saveFileDialog.setVisible(true);String name = saveFileDialog.getDirectory()+ saveFileDialog.getFile();SaveFile(name);}if (o == exit){// 退出System.exit(0);}if (o == help_issue){// 帮助JOptionPane.showMessageDialog(txtArea,"关于记事本:\n仅供学习参考 NotePad Beta 1.1");}// //////////编辑事件/////////////if (o == edit_cut || o == jp_cut){txtArea.cut();}if (o == edit_copy || o == jp_copy){txtArea.copy();}if (o == edit_paste || o == jp_paste){txtArea.paste();}if (o == edit_selectAll || o == jp_selectAll){txtArea.selectAll();}// ///////////end edit event////////////if (o == edit_find){// 从输入对话框中获取需要查询的内容String findStr = JOptionPane.showInputDialog(txtArea,"输入查询的内容", "查找", JOptionPane.QUESTION_MESSAGE);Find(findStr);}if (o == format_wrap){// 自动换行if (format_wrap.isSelected()){txtArea.setLineWrap(true);}elsetxtArea.setLineWrap(false);}}public void Find(String s){int x;String txt = txtArea.getText();x = txt.indexOf(s);if (x != -1)txtArea.select(x, x + s.length());elseJOptionPane.showMessageDialog(txtArea, "查找失败", "没有找到",JOptionPane.WARNING_MESSAGE);}public void OpenFile(String fileName){// 读取文件 使用了reader方法File file = new File(fileName);try{FileReader reader = new FileReader(file);BufferedReader br = new BufferedReader(reader);String s = new String();try{while ((s = br.readLine()) != null){txtArea.append(s + "\n");}br.close();reader.close();}catch (IOException e){e.printStackTrace();}}catch (FileNotFoundException e){e.printStackTrace();}}// 保存文件public void SaveFile(String fileName){File file = new File(fileName);try{FileWriter save = new FileWriter(file);save.write(txtArea.getText());save.close();}catch (IOException e){e.printStackTrace();}}}/** * 实现WindowListenner接口,当关闭窗口的时候获取窗口大小, * 然后调用NotePadSize类的setSize方法用properties文件保存最后尺寸 * */public void windowClosing(WindowEvent e){NotePadDimension = this.getSize();try{size.setSize(NotePadDimension);}catch (IOException e1){e1.printStackTrace();}}public void windowOpened(WindowEvent e){}public void windowClosed(WindowEvent e){}public void windowIconified(WindowEvent e){}public void windowDeiconified(WindowEvent e){}public void windowActivated(WindowEvent e){}public void windowDeactivated(WindowEvent e){}}


当然还有个properties文件
##Tue May 03 21:01:46 CST 2011height=311width=317

热点排行