社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
/*
* 引包
*/
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;
/**
* 记事本界面设计
* @author guoqiang
*
*/
public class Window extends JFrame implements ActionListener {
/* 定义组件 */
JTextArea mainJTA = null; // 主界面的文本输入
JMenuBar jmenubar = null; // 菜单条
JMenu jmenu = null; // 一级菜单
JMenuItem jmenuitemOpen = null; // 菜单选项
JMenuItem jmenuitemSave = null; // 保存
/**
* 构造函数,实现组建的初始化
*/
public Window() {
/* 创建对象 */
mainJTA = new JTextArea();
jmenubar = new JMenuBar();
jmenu = new JMenu("文件 (Alt+F)");
jmenuitemOpen = new JMenuItem("打开");
jmenuitemSave = new JMenuItem("保存");
/* 设置助记符 */
jmenu.setMnemonic('F');
/* 设置页面布局 */
this.setLayout(new BorderLayout());
/* 添加组件 */
this.add(mainJTA);
/* 注册监听 */
jmenuitemOpen.addActionListener(this);
jmenuitemOpen.setActionCommand("open");
jmenuitemSave.addActionListener(this);
jmenuitemSave.setActionCommand("save");
// 添加菜单条
this.setJMenuBar(jmenubar);
jmenubar.add(jmenu);
jmenu.add(jmenuitemOpen);
jmenu.add(jmenuitemSave);
/* 设置窗体属性 */
this.setSize(500, 350);
this.setLocation(300, 200);
this.setTitle("记事本");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setIconImage(new ImageIcon("images/star.gif").getImage());
/* 显示窗体 */
this.setVisible(true);
}
/**
* 重写ActionListener的方法
*/
@Override
public void actionPerformed(ActionEvent e) {
// 判断哪个菜单被选中
if (e.getActionCommand().equals("open")) {
// 创建文件选择对象
JFileChooser jfilechooser = new JFileChooser();
jfilechooser.setDialogTitle("请选择文件..."); // 选择文件的对话框的标题
jfilechooser.showOpenDialog(null); // 按照默认属性弹出对话框, null表示默认属性
jfilechooser.setVisible(true); // 窗体可见
// 得到用户选择的文件路径
String fileName = jfilechooser.getSelectedFile().getAbsolutePath(); // 得到绝对路径
/* 文件流 */
FileReader filereader = null;
BufferedReader bufferedreader = null;
/* 异常处理 */
try {
/* 文件字符流 */
String s = null;
String allChar = null;
filereader = new FileReader(fileName); // 德大哦文件路径
bufferedreader = new BufferedReader(filereader);
while ((s = bufferedreader.readLine()) != null) {
allChar += s + "rn"; // 字符串拼接
}
/* 在JTextArea中显示 */
mainJTA.setText(allChar); // 该方法继承于javax.swing.text.JTextComponent
} catch (Exception e1) {
e1.printStackTrace();
} finally {
// 关闭文件流
try {
bufferedreader.close();
filereader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
} else if (jmenuitemSave.getActionCommand().equals("save")) { // 选择保存菜单
// 另存为对话框
JFileChooser jfilechooser = new JFileChooser();
jfilechooser.setDialogTitle("另存为...");
jfilechooser.showSaveDialog(null); // 按照默认属性弹出对话框, null表示默认属性
jfilechooser.setVisible(true);
/* 得到保存的路径 */
String savePath = jfilechooser.getSelectedFile().getAbsolutePath(); // 得到绝对路径
/* 此处应该判断是否真的选择了地址,如果只是打开却没有选择,会抛出 java.lang.NullPointerException*/
/* 写入到指定文件 */
FileWriter filewrite = null;
BufferedWriter bufferedwrite = null;
try {
filewrite = new FileWriter(savePath);
bufferedwrite = new BufferedWriter(filewrite);
// 将JTextArea中的内容写入到指定文件
bufferedwrite.write(this.mainJTA.getText());
} catch (Exception e2) {
e2.printStackTrace();
} finally {
try {
/* 关闭文件流 */
bufferedwrite.close();
filewrite.close();
} catch (Exception e3) {
// TODO: handle exception
e3.printStackTrace();
}
}
}
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!