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

怎么解决保存有关问题

2012-01-03 
如何解决保存问题?以下是我用Java编写的记事本,文件到“打开“的功能已经实现,但”保存“的功能还没有实现,望

如何解决保存问题?

以下是我用Java编写的记事本,文件到“打开“的功能已经实现,但”保存“的功能还没有实现,望各位高手帮一下。


package jishiben;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.*;
//import com.borland.dbswing.FontChooser;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class JiShiBenFrame extends JFrame {
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  JMenuBar jMenuBar1 = new JMenuBar();
  JMenu jMenuFile = new JMenu();
  JMenuItem jMenuFileExit = new JMenuItem();
  JMenuItem jMenuNew = new JMenuItem();
  JMenuItem jMenuOpen = new JMenuItem();
  JMenuItem jMenuSave = new JMenuItem();
  JMenuItem jMenuSaveAs = new JMenuItem();
  JMenuItem jMenuSheJi = new JMenuItem();
  JMenuItem jMenuPaset = new JMenuItem();
  JMenu jMenuEdite = new JMenu();
  JMenuItem jMenuCheXiao = new JMenuItem();
  JMenuItem jMenuCut = new JMenuItem();
  JMenuItem jMenuFuZhi = new JMenuItem();
  JMenuItem jMenuItem4 = new JMenuItem();
  JMenuItem jMenuItem5 = new JMenuItem();
  JMenuItem jMenuFine = new JMenuItem();
  JMenuItem jMenuFineNext = new JMenuItem();
  JMenuItem jMenuReplace = new JMenuItem();
  JMenuItem jMenuGoto = new JMenuItem();
  JMenuItem jMenuQuanXuan = new JMenuItem();
  JMenuItem jMenuDate = new JMenuItem();
  JMenu jMenuGeShi = new JMenu();
  JMenuItem jMenuHuanHang = new JMenuItem();
  JMenuItem jMenuFont = new JMenuItem();
  JMenu jMenuChaKan = new JMenu();
  JMenuItem jMenuZhTaiLan = new JMenuItem();
  JMenu jMenuHelp = new JMenu();
  JMenuItem jMenuHe = new JMenuItem();
  JMenuItem jMenuGYJSB = new JMenuItem();
  JFileChooser jFileChooserDaKai = new JFileChooser();
  JTextArea jTextArea = new JTextArea();
  public JiShiBenFrame() {
  try {
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  jbInit();
  } catch (Exception exception) {
  exception.printStackTrace();
  }
  }

  /**
  * Component initialization.
  *
  * @throws java.lang.Exception
  */
  private void jbInit() throws Exception {
  contentPane = (JPanel) getContentPane();
  contentPane.setLayout(borderLayout1);
  setSize(new Dimension(400, 300));
  setTitle("记事本编辑器");
  jMenuFile.setText("文件(F)");
  jMenuFileExit.setText("退出(X)");
  jMenuFileExit.addActionListener(new
  JiShiBenFrame_jMenuFileExit_ActionAdapter(this));
  jMenuNew.setText("新建(N)");
  jMenuOpen.setText("打开(O)...");
  jMenuOpen.addActionListener(new JiShiBenFrame_jMenuOpen_actionAdapter(this));
  jMenuSave.setText("保存(S)...");
  jMenuSaveAs.setText("另存为(A)...");
  jMenuSheJi.setText("页面设计(U)");
  jMenuPaset.setText("打印(P)");
  jMenuEdite.setText("编辑(E)");


  jMenuCheXiao.setText("撤消(U)");
  jMenuCut.setText("剪贴(I)");
  jMenuFuZhi.setText("复制(C)");
  jMenuItem4.setText("粘贴(P)");
  jMenuItem5.setText("删除(L)");
  jMenuFine.setText("查找(F)...");
  jMenuFineNext.setText("查找下一个(N)");
  jMenuReplace.setText("替换(R)...");
  jMenuGoto.setText("转到(G)...");
  jMenuQuanXuan.setText("全选(A)");
  jMenuDate.setText("日期/时间(D)");
  jMenuGeShi.setText("格式(O)");
  jMenuHuanHang.setText("自动换行(W)");
  jMenuFont.setText("字体(F)");
  jMenuChaKan.setText("查看(V)");
  jMenuZhTaiLan.setText("状态栏(s)");
  jMenuHelp.setText("帮助(H)");
  jMenuHe.setText("帮助主题(H)");
  jMenuGYJSB.setText("关于记事本(A)");
  jTextArea.setText("");
  jMenuBar1.add(jMenuFile);
  jMenuBar1.add(jMenuEdite);
  jMenuBar1.add(jMenuGeShi);
  jMenuBar1.add(jMenuChaKan);
  jMenuBar1.add(jMenuHelp);
  jMenuFile.add(jMenuNew);
  jMenuFile.add(jMenuOpen);
  jMenuFile.add(jMenuSave);
  jMenuFile.add(jMenuSaveAs);
  jMenuFile.addSeparator();
  jMenuFile.add(jMenuSheJi);
  jMenuFile.add(jMenuPaset);
  jMenuFile.addSeparator();
  jMenuFile.add(jMenuFileExit);
  jMenuEdite.add(jMenuCheXiao);
  jMenuEdite.addSeparator();
  jMenuEdite.add(jMenuQuanXuan);

  jMenuEdite.add(jMenuFine);
  jMenuEdite.add(jMenuFineNext);
  jMenuEdite.add(jMenuReplace);
  jMenuEdite.add(jMenuGoto);
  jMenuEdite.addSeparator();
  jMenuEdite.add(jMenuCut);
  jMenuEdite.add(jMenuFuZhi);
  jMenuEdite.add(jMenuItem4);
  jMenuEdite.add(jMenuItem5);
  jMenuEdite.addSeparator();
  jMenuEdite.add(jMenuDate);
  jMenuGeShi.add(jMenuHuanHang);
  jMenuGeShi.add(jMenuFont);
  jMenuChaKan.add(jMenuZhTaiLan);
  jMenuHelp.add(jMenuHe);
  jMenuHelp.add(jMenuGYJSB);
  contentPane.add(jTextArea, java.awt.BorderLayout.CENTER);
  setJMenuBar(jMenuBar1);
  }

  /**
  * File | Exit action performed.
  *
  * @param actionEvent ActionEvent
  */
  void jMenuFileExit_actionPerformed(ActionEvent actionEvent) {
  System.exit(0);
  }

  public void jMenuOpen_actionPerformed(ActionEvent e) {
  this.jTextArea.setText("");  
  jFileChooserDaKai.showOpenDialog(this); //实现打开的功能
  String path=jFileChooserDaKai.getSelectedFile().getPath(); //  
  try {
  BufferedReader br = new BufferedReader(new FileReader(path));
  String Data=br.readLine();
  while(Data!=null){
  this.jTextArea.append(Data+"\n");
  Data=br.readLine();
  }
  } catch (FileNotFoundException ex) {
  } catch (IOException ex) {
  /** @todo Handle this exception */
  }

  }
}


class JiShiBenFrame_jMenuOpen_actionAdapter implements ActionListener {


  private JiShiBenFrame adaptee;
  JiShiBenFrame_jMenuOpen_actionAdapter(JiShiBenFrame adaptee) {
  this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
  adaptee.jMenuOpen_actionPerformed(e);
  }
}


class JiShiBenFrame_jMenuFileExit_ActionAdapter implements ActionListener {
  JiShiBenFrame adaptee;

  JiShiBenFrame_jMenuFileExit_ActionAdapter(JiShiBenFrame adaptee) {
  this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent actionEvent) {
  adaptee.jMenuFileExit_actionPerformed(actionEvent);
  }
}




[解决办法]
代码太多了 没有细看 我把保存的几个重点 给你说一下吧

对于文件的保存
1:要注意对流的关闭 因为在最后如果没有把写流关闭
2:对于管道流的扩充 只能从小变大 不建议从大变小
3:对于流的控制 也就是在写入的时候 不要陷入死循环


我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
[解决办法]
楼上的就差不多了
[解决办法]

探讨
代码太多了 没有细看 我把保存的几个重点 给你说一下吧

对于文件的保存
1:要注意对流的关闭 因为在最后如果没有把写流关闭
2:对于管道流的扩充 只能从小变大 不建议从大变小
3:对于流的控制 也就是在写入的时候 不要陷入死循环


我是小菜鸟! 说的不好清见谅, 希望能够帮到你!

[解决办法]
其实打开和保存差不多
把打开的读换成写
稍微的变动一下就行了

热点排行