import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.GridLayout;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.text.JTextComponent;public class MyNotepad 
{
 static JFrame frame;
 static JScrollPane textScroll = null;
 static JTextArea textArea = null;
     public static final int FRAME_WIDTH = 300;
 public static final int FRAME_HEIGHT = 300;  public static final void init()
 {
  frame = new JFrame("记事本");
  // ImageIcon image = new ImageIcon("src/myPicture.jpg");
  // frame.setIconImage(image.getImage());
  // 1、菜单条
  MenuBar menuBar = new MenuBar();
  frame.setMenuBar(menuBar);   // 2、创建菜单
  Menu fileMenu = new Menu("文件(F)");
  Menu editMenu = new Menu("编辑(E)");
  Menu formatMenu = new Menu("格式(O)");
  menuBar.add(fileMenu);
  menuBar.add(editMenu);
  menuBar.add(formatMenu);   // 3、文件子菜单项
  MenuItem openFile = new MenuItem("打开文件", new MenuShortcut(0x4F, true));
  MenuItem newFile = new MenuItem("新建", new MenuShortcut(0x4E, true));
  MenuItem save = new MenuItem("保存", new MenuShortcut(0x53, false));
  MenuItem saveAs = new MenuItem("另存为", new MenuShortcut(0x53, true));
  MenuItem close = new MenuItem("关闭", new MenuShortcut(0x57, false));
  MenuItem exit = new MenuItem("退出");
  fileMenu.add(newFile);
  fileMenu.add(openFile);
  fileMenu.insertSeparator(2);
  fileMenu.add(close);
  fileMenu.insertSeparator(4);
  fileMenu.add(save);
  fileMenu.add(saveAs);
  fileMenu.add(exit);   // 创建文本域
  textArea = new JTextArea(300,300);
  // 创建滚动条
  textScroll = new JScrollPane(textArea);
  frame.add(textScroll, BorderLayout.CENTER);
  // 创建标签
 
  final JTextField textfield = new JTextField(3);
  final JTextField textfield1 = new JTextField(3);
  final JTextField textfield2 = new JTextField(3);
  final JTextField textfield3 = new JTextField(3);
  final JTextField textfield4 = new JTextField(3);
  final JTextField textfield5 = new JTextField(3);
  final JTextField textfield6 = new JTextField(3);
  final JTextField textfield7 = new JTextField(3);  
 

 JPanel northpanel = new JPanel();
 JPanel southpanel = new JPanel();
 northpanel. setLayout(new GridLayout(4,4));  

 northpanel.add(new JLabel("User name:")); 
 northpanel.add(textfield);
 northpanel.add(new JLabel("User name1:")); 
 northpanel.add(textfield1);
 northpanel.add(new JLabel("User name2:")); 
 northpanel.add(textfield2);
 northpanel.add(new JLabel("User name3:")); 
 northpanel.add(textfield3);
 northpanel.add(new JLabel("User name4:")); 
 northpanel.add(textfield4);
 northpanel.add(new JLabel("User name5:")); 
 northpanel.add(textfield5);
 northpanel.add(new JLabel("User name6:")); 
 northpanel.add(textfield6);
 northpanel.add(new JLabel("User name7:")); 
 northpanel.add(textfield7);
 
        frame.add(northpanel,BorderLayout.NORTH);
 
 
 JButton inserButton = new JButton("insert");


 southpanel.add(inserButton);
 inserButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
textArea.append("<token> "+textfield.getText()+"</token>"+"\n");
}
});

 frame.add(southpanel,BorderLayout.SOUTH);    // 1、打开文件处理事件
  openFile.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    FileDialog openFileDialog = new FileDialog(frame, "打开",
      FileDialog.LOAD);
    openFileDialog.setVisible(true);
    textArea.setVisible(true);
    
    // 得到文件名
    String openedFileName = openFileDialog.getFile();
    String openedFileDirectory = openFileDialog.getDirectory();
    String openedFilePath = openedFileDirectory + openedFileName;
    if (openedFileName.equals("") || openedFileName == null)
    {
     frame.setTitle("无标题 - 记事本");
    }
    else
    {
     frame.setTitle(openedFileName + " - 记事本");
    }
    try
    {
     writerBuffertoJTextArea(openedFilePath, textArea);
    }
    catch (IOException e1)
    {
     e1.printStackTrace();
    }
   }
  });
     // 2、 新建事件处理
  newFile.addActionListener(new ActionListener()
  {    @Override
   public void actionPerformed(ActionEvent e)
   {
    textArea.setVisible(true);
    frame.setTitle("无标题 - 记事本");
    textArea.setText("");
   }
  });   // 3、 关闭文件事件
  close.addActionListener(new ActionListener()
  {    public void actionPerformed(ActionEvent e)
   {
    textArea.setVisible(false);
    // textArea = null;
   }
  });   // 4、保存文件事件
  save.addActionListener(new ActionListener()
  {
   @Override
   public void actionPerformed(ActionEvent e)
   {
    FileDialog saveFileDialog = new FileDialog(frame, "保存",
      FileDialog.SAVE);
    saveFileDialog.setVisible(true);
    // 得到文件名
    String saveFileName = saveFileDialog.getFile();
    String saveFileDirectory = saveFileDialog.getDirectory();
    String saveFilePath = saveFileDirectory + saveFileName;
    if (saveFileName.equals("") || saveFileName == null)
    {
     frame.setTitle("无标题 - 记事本");
    }
    else
    {
     frame.setTitle(saveFileName + " - 记事本");
    }     try
    {
     textBufferToFile(textArea, saveFilePath);
    }
    catch (IOException e1)
    {
     e1.printStackTrace();
    }
   }
  });   // 5、另存为事件处理
  saveAs.addActionListener(new ActionListener()
  {    @Override
   public void actionPerformed(ActionEvent e)
   {     FileDialog saveAsFileDialog = new FileDialog(frame, "另存为",
      FileDialog.SAVE);
    saveAsFileDialog.setVisible(true);
    // 得到文件名
    String saveAsFileName = saveAsFileDialog.getFile();
    String saveAsFileDirectory = saveAsFileDialog.getDirectory();
    String svaeAsFilePath = saveAsFileDirectory + saveAsFileName;
    if (saveAsFileName.equals("") || saveAsFileName == null)
    {
     frame.setTitle("无标题 - 记事本");
    }
    else
    {
     frame.setTitle(saveAsFileName + " - 记事本");
    }     try
    {
     textBufferToFile(textArea, svaeAsFilePath);
    }
    catch (IOException e1)
    {
     e1.printStackTrace();
    }
   }
  });   // 6、退出事件处理
  exit.addActionListener(new ActionListener()
  {
   @Override
   public void actionPerformed(ActionEvent e)
   {
    System.exit(0);
   }
  });   // 3.2、编辑子菜单项
  MenuItem copy = new MenuItem("复制", new MenuShortcut(0x43, false));
  MenuItem cut = new MenuItem("剪切", new MenuShortcut(0x58, false));
  MenuItem paste = new MenuItem("粘贴", new MenuShortcut(0x56, false));
  MenuItem edition = new MenuItem("版本");
  editMenu.add(copy);
  editMenu.add(cut);
  editMenu.add(paste);
  editMenu.add(edition);
  editMenu.insertSeparator(3);   // 3.3 格式字菜单项
  MenuItem autoLine = new MenuItem("自动换行");
  MenuItem font = new MenuItem("字体");
  formatMenu.add(autoLine);
  formatMenu.add(font);   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
  frame.setLocation(100, 20);
  frame.setVisible(true);
 }
public static void main(String[] args)
 {   init();
 }  // 把一个文件里面的内容写入文本框
 public static final void writerBuffertoJTextArea(String fileFrom,
   JTextComponent text) throws IOException
 {
  InputStream inBuffer = null;
  OutputStream outBuffer = null;
  InputStream in = null;
  OutputStream out = null;

  try
  {
    
   in = new FileInputStream(fileFrom);
   inBuffer = new BufferedInputStream(in);
   StringBuffer sb = new StringBuffer();
//    InputStreamReader input = new InputStreamReader(new FileInputStream(fileFrom),"UTF-8" );
   while (true)
   {

    byte[] b = new byte[1024];
    int bytedata = inBuffer.read(b);
    sb = sb.append(new String(b));     if (bytedata == -1)
    {
     break;
    }
   }
   text.setText(sb.toString());

   
  }
  finally
  {
   if (inBuffer != null)
   {
    inBuffer.close();
   }
   if (outBuffer != null)
   {
    outBuffer.close();
   }
  }
 }
// 把文本框里面的内容写入一个文件中
 // 写文件
 public static final void textBufferToFile(JTextComponent text, String fileTo)
   throws IOException
 {
  FileOutputStream out = null;
  OutputStreamWriter outWriter = null;
  BufferedWriter bufferedWriter = null;   try
  {
   out = new FileOutputStream(fileTo, false);
   outWriter = new OutputStreamWriter(out);
   bufferedWriter = new BufferedWriter(outWriter);
   String content = new String(text.getText());
   bufferedWriter.write(content);   }
  finally
  {
   if (bufferedWriter != null)
   {
    bufferedWriter.close();
   }
   if (outWriter != null)
   {
    outWriter.close();
   }
   if (out != null)
   {
    out.close();
   }
  }
 } }
[/code]

解决方案 »

  1.   

    能不能说的详细一点,最好可以有代码,我是刚学习java,程序方面不是太懂
      

  2.   

    // InputStreamReader input = new InputStreamReader(new FileInputStream(fileFrom),"UTF-8" ); 
    这样就是带编码的方式打开文件了把上面注释打开,然后修改BufferedReader bf = new BufferedReader(input);
    String buf;
    while ((buf=br.readLine()) != null) {
        sb.appned(buf); //按行读入保存
        sb.append(System.getProperty("line.separator")); //系统换行符
    }
    bf.close();
    text.setText(sb.toString());
      

  3.   

    InputStreamReader input = new InputStreamReader(new FileInputStream(fileFrom),"UTF-8" );  如何修改?我改了很多次都不行,请求指点
      

  4.   

    怎么改不好的?
    public static final void writerBuffertoJTextArea(String fileFrom,
    JTextComponent text) throws IOException
    {  
        StringBiulder sb = new StringBuilder();
        InputStreamReader input = new InputStreamReader(new FileInputStream(fileFrom),"UTF-8" ); 
        BufferedReader br = new BufferedReader(input);
        String buf;
        while ((buf=br.readLine()) != null)
        {  
            sb.append(buf);
            sb.append(System.getProperty("line.separator"));
        }
        br.close();
        text.setText(sb.toString()); 
    }
      

  5.   

    我刚刚试了你给的程序,现在已经可以读写xml的文件了,真的太谢谢你了~
      

  6.   

    太谢谢你了,现在我的程序可以读取xml文件了,真心感谢~
      

  7.   

    BufferedReader bf = new BufferedReader(input);
    String buf;
    while ((buf=br.readLine()) != null) {
        sb.appned(buf); //按行读入保存
        sb.append(System.getProperty("line.separator")); //系统换行符
    }
    bf.close();
    text.setText(sb.toString());