之前一直在web上编程,没用过GUI,这几天看了GUI的一部分,写了个简易的记事本,抛砖引玉吧
代码说话,一看就懂
import javax.swing.JTextArea;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
*
* @author Wang Yanming
*
*/
public class Notepad extends JFrame implements ActionListener {
/**
* 定义需要的组件
*/
JTextArea jta = null;
// 定义菜单条
JMenuBar jmb = null;// 相当于整个菜单条
// 定义JMeau
JMenu jm1 = null; // 具体的哪一个菜单如file
JMenu jm2 = null;
JMenuItem jmi1 = null; // 某一个菜单中的具体项
JMenuItem jmi2 = null;
public static void main(String[] args) {
Notepad np = new Notepad();
}
// 构造函数
public Notepad() {
// 创建JTA
jta = new JTextArea();
jmb = new JMenuBar();
jm1 = new JMenu("文件(o)");
// 设置一个助记符
jm1.setMnemonic('F');
jm2 = new JMenu("编辑(e)");
jm2.setMnemonic('e');
jmi1 = new JMenuItem("打开");
// 注册监听
jmi1.addActionListener(this);// 交给这个类知道
jmi1.setActionCommand("open");
jmi2 = new JMenuItem("保存");
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
// 加入菜单条
this.setJMenuBar(jmb);
// 把jm1方法jmb
jmb.add(jm1);
jmb.add(jm2);
// 把item方法menu
jm1.add(jmi1);
jm1.add(jmi2);
// 放入到JFrame
this.add(jta);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时停止JVM运行
}
@Override
// 用户点击哪个菜单
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 判断是哪个菜单被点击选中
if (e.getActionCommand().equals("open")) {
System.out.println("open");
// 隆重推荐文件选择JFileChooser
// 创建一个文件选择组件
JFileChooser jfc1 = new JFileChooser();
// 设置名字
jfc1.setDialogTitle("请选择文件");
// 使用默认方式
jfc1.showOpenDialog(null);
// 显示
jfc1.setVisible(true);
/****** 以上就可以出现打开文件窗口 *******/
// 得到用户选择文件的全路径
String filename = jfc1.getSelectedFile().getAbsolutePath();
// System.out.println(filename);
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(filename);
br = new BufferedReader(fr);
// 从文件中读取信息,并显示到jta中
String s = "";
String allCon = "";
while ((s = br.readLine()) != null) {
allCon += s + "\r\n";
}
// //显示到jta中
jta.setText(allCon);
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
} finally {
try {
br.close();
fr.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
else if (e.getActionCommand().equals("save")) {//和打开大部分代码一样
JFileChooser jfc2 = new JFileChooser();
jfc2.setDialogTitle("请选择保存位置");
jfc2.showSaveDialog(null);
jfc2.setVisible(true);
String savefilename = jfc2.getSelectedFile().getAbsolutePath();
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(savefilename);
bw = new BufferedWriter(fw);
bw.write(this.jta.getText());
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
} finally {
try {
bw.close();
fw.close();
} catch (Exception e3) {
// TODO: handl
e3.printStackTrace();
}
}
}
}
}