本人的GitHub:戳我一下
这个程序还有很多问题,但是总的框架已经搭好,因为图形界面并不是主要的学习内容,所以这个写的挺糟糕的。
/**
* 我的记事本(界面+功能)
*/
package com.yifanjia.one;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class NotePad extends JFrame implements ActionListener {
//定义需要的组件
JTextArea jta = null;
//定义菜单条
JMenuBar jmb = null;
JMenu jm1 = null;
JMenuItem jmi1 = null;
JMenuItem jmi2 = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
NotePad np = new NotePad();
}
public NotePad() {
jta = new JTextArea();
jmb = new JMenuBar();
jm1 = new JMenu("文件");
//设置助记符
jm1.setMnemonic('F');
jmi1 = new JMenuItem("打开");
//注册监听
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
jmi2 = new JMenuItem("保存");
jmi2.addActionListener(this);
jmi2.setActionCommand("close");
this.add(jta);
//加入
this.setJMenuBar(jmb);
//把jm1放入jmb
jmb.add(jm1);
//把item放入Menu
jm1.add(jmi1);
jm1.add(jmi2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,300);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//判断是那个按钮被选中
if(e.getActionCommand().equals("open")) {
//文件选择组件
JFileChooser jfc1 = new JFileChooser();
//设置名字
jfc1.setDialogTitle("请选择文件.....");
//使用默认方式
jfc1.showOpenDialog(null);
//显示一下
jfc1.setVisible(true);
//得到用户选择的文件绝对路径
String filename = jfc1.getSelectedFile().getAbsolutePath();
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(filename);
br = new BufferedReader(fr);
String s = "";
String all = "";
while((s = br.readLine()) != null) {
all += (s + '\n');
}
jta.setText(all);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
try {
br.close();
fr.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
else if(e.getActionCommand().equals("close")){
//文件选择组件
JFileChooser jfc1 = new JFileChooser();
//设置名字
jfc1.setDialogTitle("另存为.....");
//使用默认方式
jfc1.showSaveDialog(null);
//显示一下
jfc1.setVisible(true);
//得到用户选择的文件绝对路径
String filename = jfc1.getSelectedFile().getAbsolutePath();
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(filename);
bw = new BufferedWriter(fw);
String all = jta.getText();
bw.write(all);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
try {
bw.close();
fw.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}