import java.io.*;
import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class NoteBook extends JFrame implements ActionListener {
JTextArea jta = null;
JMenuBar jmb = null;
JMenu jm = null;
JMenuItem jmi1 = null;
JMenuItem jmi2 = null;
JMenuItem jmi3 = null;
JScrollPane jsp = null;

public static void main(String args[]) {
new NoteBook();
}

public NoteBook() {
jta = new JTextArea();
jsp = new JScrollPane(jta);

//分别设置水平和垂直滚动条自动出现
jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); jmb = new JMenuBar();
jm = new JMenu("文件");
jmi1 = new JMenuItem("打开");
jmi1.setActionCommand("OPEN");
jmi1.addActionListener(this);
jmi2 = new JMenuItem("保存");
jmi2.setActionCommand("SAVE");
jmi2.addActionListener(this);
jmi3 = new JMenuItem("退出");
jmi3.setActionCommand("EXIT");
jmi3.addActionListener(this);
this.add(jsp);
this.add(jmb,BorderLayout.NORTH);
jmb.add(jm);
jm.add(jmi1);
jm.add(jmi2);
jm.add(jmi3);
this.setSize(600,600);
this.setTitle("记事本");
this.setLocation(200, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("OPEN")) {
JFileChooser jfc1 = new JFileChooser();
jfc1.setDialogTitle("请选择文件...");
jfc1.showOpenDialog(null);
jfc1.setVisible(true);

String fileName = null;
try {
fileName = jfc1.getSelectedFile().getAbsolutePath();//异常
}catch(java.lang.NullPointerException e1) {
System.out.println("取消打开文件!");
// e1.printStackTrace();
} String str = null;
String allStr = null;
BufferedReader br = null;
try {
    br = new BufferedReader(new FileReader(fileName));
while((str = br.readLine())!= null) {
allStr += str + "\r\n";
}
jta.setText(allStr);
} catch (Exception e1) {
e1.printStackTrace();
}finally {
try {
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}

if(e.getActionCommand().equals("SAVE")) {
JFileChooser jfc2 = new JFileChooser();
jfc2.setDialogTitle("另存为...");
jfc2.showSaveDialog(null);
jfc2.setVisible(true);

String fileName = null;
try {
fileName = jfc2.getSelectedFile().getAbsolutePath(); //异常
}catch(java.lang.NullPointerException e1) {
System.out.println("取消打开文件!");
// e1.printStackTrace();
}

BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(fileName));
bw.write(jta.getText());
} catch (Exception e1) {
e1.printStackTrace();
}finally {
try {
bw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}

if(e.getActionCommand().equals("EXIT")) {
System.exit(0);
}
}
}

解决方案 »

  1.   

    那就判断一下getSelectedFile()返回结果是否为null if (e.getActionCommand().equals("OPEN")) {
    JFileChooser jfc1 = new JFileChooser();
    jfc1.setDialogTitle("请选择文件...");
    jfc1.showOpenDialog(null);
    jfc1.setVisible(true); String fileName = null;
    try {
    File selectedFile = jfc1.getSelectedFile();
    if (selectedFile != null) { // 判断是否选中文件
    fileName = selectedFile.getAbsolutePath();
    }
    } catch (java.lang.NullPointerException e1) {
    System.out.println("取消打开文件!");
    e1.printStackTrace();
    } if (fileName != null) { // 选中文件才进行写入操作
    String str = null;
    String allStr = null;
    BufferedReader br = null;
    try {
    br = new BufferedReader(new FileReader(fileName));
    while ((str = br.readLine()) != null) {
    allStr += str + "\r\n";
    }
    jta.setText(allStr);
    } catch (Exception e1) {
    e1.printStackTrace();
    } finally {
    try {
    br.close();
    } catch (IOException e1) {
    e1.printStackTrace();
    }
    }
    }

    }
      

  2.   

    在这段代码中关闭异常的输出即可。
    //e1.printStackTrace();