Notebook记事本程序
模仿windows系统自带的记事本程序制作简单案例。界面设计包括菜单栏,菜单栏中有文件选项,包含带图标的打开、保存文件列表,还包括主界面文本编辑区。打开文件弹出打开文件对话框选择文件,保存文件弹出另存为对话框保存进行文件保存设置。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class Notepad extends JFrame implements ActionListener{
JTextArea jta=null; // 文本输入区域
JMenuBar jmb=null; // 菜单栏
JMenu jml=null; // 菜单
JMenuItem jmi1=null; // 菜单项1
JMenuItem jmi2=null; // 菜单项2
public Notepad(){
jta=new JTextArea(); // 实例化文本输入区域
jmb=new JMenuBar(); // 实例化菜单栏
jml=new JMenu("文件"); // 实例化菜单
jml.setMnemonic('F'); // 设置助记符
//两个图标路径换一下
jmi1=new JMenuItem("打开", new ImageIcon("image/open.png"));
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
jmi2=new JMenuItem("保存", new ImageIcon("image/save.png"));
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
this.setJMenuBar(jmb); // 设置窗口菜单栏
jmb.add(jml); // 把菜单放入菜单栏
jml.add(jmi1); // 把打开菜单项放入菜单
jml.add(jmi2); // 把保存菜单项放入菜单
this.add(jta); // 把文本输入域放入窗口
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,300);
this.setVisible(true);
}
private void openFile(){
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle("请选择文件....");
jfc1.showOpenDialog(null); //使用默认方式
jfc1.setVisible(true);
//判断是否选择了文件
if (jfc1.getSelectedFile()==null)
return;
//得到用户选择的文件路径
String filename=jfc1.getSelectedFile().getAbsolutePath();
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(filename);
br=new BufferedReader(fr);
//从文件中读取信息并显示到jta
String s="";
String allCon="";
try {
while((s=br.readLine())!=null){
allCon+=s+"\r\n";
}
//放置到jta
jta.setText(allCon);
} catch (IOException e1) {
e1.printStackTrace();
}finally{
br.close();
fr.close();
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
private void saveFile(){
//出现保存对话框
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("另存为.....");
//按默认的方式显示
jfc.showSaveDialog(null);
jfc.setVisible(true);
//得到用户希望吧文件保存到何处,文件全路径
String file=jfc.getSelectedFile().getAbsolutePath();
//准备写入到指定文件
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);
bw=new BufferedWriter(fw);
bw.write(this.jta.getText()); //一次性全部保存
} catch (IOException e1) {
e1.printStackTrace();
}finally{
try {
bw.close();
fw.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
//判断是哪个按钮菜单被选中
if(e.getActionCommand().equals("open")){
openFile();
}else if(e.getActionCommand().equals("save")){
saveFile();
}
}
public static void main(String[] args) {
new Notepad();
}
}