package 第12题;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class NotePad extends JFrame implements ActionListener{
private JMenuItem fileNew = new JMenuItem("新建(N)     Ctrl+N");
private JMenuItem fileOpen = new JMenuItem("打开(O)     Ctrl+O");
private JMenuItem fileSave = new JMenuItem("保存(S)    Ctrl+S");
private JMenuItem fileSave_As = new JMenuItem("另存为(A)");
private JMenuItem filePage_Setup = new JMenuItem("页面设置(U)");
private JMenuItem filePrint = new JMenuItem("打印(P)    Ctrl+P");
private JMenuItem fileExit= new JMenuItem("退出(X)");
private JMenuItem editRevocation = new JMenuItem("撤销(U)     Ctrl+Z");
private JMenuItem editShear = new JMenuItem("剪切(T)     Ctrl+X");
private JMenuItem editCopy = new JMenuItem("复制(C)    Ctrl+C");
private JMenuItem editPaste = new JMenuItem("粘贴(P)    Ctrl+P");
private JMenuItem editDelete = new JMenuItem("删除(Del)     Del");
private JMenuItem editFind = new JMenuItem("查找(F)     Ctrl+F");
private JMenuItem editFind_Next = new JMenuItem("查找下一个(N)     F3");
private JMenuItem editReplacement = new JMenuItem("替换(R)    Ctrl+H");
private JMenuItem editGo = new JMenuItem("转到(G)     Ctrl+G");
private JMenuItem editSelet = new JMenuItem("全选(A)     Ctrl+A");
private JMenuItem editTime_Date = new JMenuItem("时间/日期(D)     F5");
private JMenuItem formatWrap = new JMenuItem("自动换行(W)");
private JMenuItem formatFonts = new JMenuItem("字体(F)");
private JMenuItem viewStatus_Bar = new JMenuItem("状态栏(S)");
private JMenuItem helpHelp_Topics = new JMenuItem("帮助主题(H)");
private JMenuItem helpAbout = new JMenuItem("关于记事本(A)");
private JTextArea ta= new JTextArea(10,20);
public NotePad(){
super("记事本");
JMenu file = new JMenu("文件(F)");
JMenu edit = new JMenu("编辑(E)");
JMenu format = new JMenu("格式(O)");
JMenu view = new JMenu("查看(V)");
JMenu help = new JMenu("帮助(H)");
file.add(fileNew);file.add(fileOpen);file.add(fileSave);file.add(fileSave_As);
file.add(filePage_Setup);file.add(filePrint);file.add(fileExit);
edit.add(editRevocation);edit.add(editShear);edit.add(editCopy);
edit.add(editPaste);edit.add(editDelete);edit.add(editFind);edit.add(editFind_Next);
edit.add(editReplacement);edit.add(editGo);edit.add(editSelet);edit.add(editTime_Date);
format.add(formatWrap);format.add(formatFonts);
view.add(viewStatus_Bar);
help.add(helpHelp_Topics);help.add(helpAbout);
add(ta);
JMenuBar bar = new JMenuBar();
bar.add(file);
bar.add(edit);
bar.add(format);
bar.add(view);
bar.add(help);
ta.setBackground(Color.green);
setJMenuBar(bar);
fileExit.addActionListener(this);
fileNew.addActionListener(this);
fileOpen.addActionListener(this);
fileSave.addActionListener(this);
pack();
validate();
setSize(750,550);
setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
public void readFile(String file){
ta.setText("");
try{
PrintWriter out = new PrintWriter(new BufferedWriter(file));
BufferedReader in = new BufferedReader(new FileReader(file));
String line;
while ((line = in.readLine())!= null)
ta.append(line + "\n");
in.close();
ta.setCaretPosition(0);
}catch(IOException ioe){
System.err.println(ioe);
}
}
public static void main(String[] args){
NotePad np = new NotePad();
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource() == fileExit){
System.exit(0);
}
else if(ae.getSource() == fileNew){
NotePad np1 = new NotePad();
}
else if(ae.getSource() == fileOpen){

FileDialog fd = new FileDialog(this,"请选择要打开的文件",FileDialog.LOAD);
fd.setVisible(true);
if(fd.getFile() != null){
File file = new File(fd.getDirectory() + fd.getFile());
if(file.exists())
readFile(file.toString());
else
ta.setText("File name: " + file + " invalid.");
}
else if(ae.getSource() == fileSave){
FileDialog fidi = new FileDialog(this,"请选择要保存的位置",FileDialog.SAVE);
fidi.setVisible(true);
}
fd.dispose();
}
}
}
各位帮忙看看这个程序为什么会出现:
E:\programs\JAVA\练习\第六章\第6章\NotePad.java:73: 找不到符号
符号: 构造函数 BufferedWriter(java.lang.String)
位置: 类 java.io.BufferedWriter
            PrintWriter out = new PrintWriter(new BufferedWriter(file));    
                                              ^
1 错误Process completed.
这种错误。
为什么新建没有实现!
各位大侠帮个忙吧!我都搞的好糊涂了!
谢谢!!!

解决方案 »

  1.   

    BufferedWriter构造函数不接受String 作为参数, 要使用Writer作为参数. PrintWriter out = new PrintWriter(new BufferedWriter(file)); 这句要改成:PrintWriter out = new PrintWriter(new BufferedWriter( new FileWriter(file) ));
      

  2.   

    BufferedWriter(Writer out) 
              创建一个使用默认大小输出缓冲区的缓冲字符输出流。 
    BufferedWriter(Writer out, int sz) 
              创建一个使用给定大小输出缓冲区的新缓冲字符输出流。 
    BufferedWriter没有 String的构造方法
      

  3.   

    BufferedWriter构造函数不接受String 作为参数BufferedWriter(Writer out) 
              Creates a buffered character-output stream that uses a default-sized output buffer. 
    BufferedWriter(Writer out, int sz) 
              Creates a new buffered character-output stream that uses an output buffer of the given size. 那行根本就没必要,而且在我的机器上功能实现了;