如何解决保存问题?
以下是我用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:对于流的控制 也就是在写入的时候 不要陷入死循环
我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
[解决办法]
楼上的就差不多了
[解决办法]