📄 noteactionlistener.java
字号:
package cn.com.csuinfosoft;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.text.JTextComponent;
import cn.com.csuinfosoft.io.FileStreamException;
import cn.com.csuinfosoft.io.FileStreamOper;
import cn.com.csuinfosoft.io.impl.FileStreamReaderWriterImpl;
import cn.com.csuinfosoft.util.IConstants;
import cn.com.csuinfosoft.util.LogWriter;
/**
* 事件监听实现类
* @author
*
*/
public class NoteActionListener implements ActionListener {
/**
* 文件操作的状态
* 1 --- 打开一个文件没有做修改
* 2 --- 打开一个文件已经修改
*/
public static int fileState = 0;
/**
* 文件内容处理容器
*/
private JTextComponent fileText = null;
/**
* 运行窗口
*/
private JFrame jframe = null;
/**
* 文件选择框对象
*/
private JFileChooser fileChooser = null;
/**
* 文件操作
*/
private FileStreamOper fileStreamOper = null;
/**
* 文件路径名称
*/
private String fileName = null;
private PrintWriter pw;
private LogWriter logWriter;
/**
* 记事本监听器的构造函数
* @param argCon Container
* @param argJFrame JFrame
*/
public NoteActionListener(Container argCon, JFrame argJFrame,PrintWriter pw,LogWriter logWriter) {
fileText = (JTextComponent) argCon;
jframe = argJFrame;
this.pw = pw;
this.logWriter = logWriter;
fileChooser = new JFileChooser();
fileStreamOper = new FileStreamReaderWriterImpl();
}
/**
* 事件处理方法
* @param ActionEvent e
*/
public void actionPerformed(ActionEvent e) {
String actionComd = e.getActionCommand();// 操作命令名称
//如果是创建一个新文件
if(IConstants.FILE_NEW.equals(actionComd)) {
fileText.setText("");
fileName = null;
NoteActionListener.fileState = 1;
logWriter.log("No URL specified for " + IConstants.FILE_NEW,
LogWriter.INFO);
} else if(IConstants.FILE_OPEN.equals(actionComd)) {
logWriter.log("开始打开文件 " + IConstants.FILE_OPEN,
LogWriter.INFO);
//打开硬盘上一个文件
fileText.setText(getFileContent());
NoteActionListener.fileState = 1;
logWriter.log("文件打开成功 " + IConstants.FILE_OPEN,
LogWriter.INFO);
} else if(IConstants.FILE_SAVE.equals(actionComd)) {
//将当前的文件内容进行保存
switch (fileState) {
case 2:
return;
case 1:
saveFileContent();
}
} else if(IConstants.FILE_CLOSE.equals(actionComd)) {
//关闭文件操作
int showState = JOptionPane.NO_OPTION;
if(NoteActionListener.fileState == 1) {
showState = setOptionMessage("是否需要将该文件保存!");
if(showState == JOptionPane.OK_OPTION) {
saveFileContent();
}
}
fileText.setText("");
fileName = null;
NoteActionListener.fileState = 0;
} else if(IConstants.FILE_QUIT.equals(actionComd)) {
//退出文件操作
int showState = JOptionPane.NO_OPTION;
if(NoteActionListener.fileState == 1) {
showState = setOptionMessage("是否需要将该文件保存!");
if(showState == JOptionPane.OK_OPTION) {
saveFileContent();
}
}
if(showState != JOptionPane.CANCEL_OPTION) {
System.exit(0);
}
} else if(IConstants.FONT_BOLD.equals(actionComd)) {
//设置字体粗细
Font font = fileText.getFont(); //文本域中当前字体
if(font.getStyle() != Font.BOLD) {
fileText.setFont(new Font("宋体", Font.BOLD, font.getSize()));
} else {
fileText.setFont(new Font("宋体", Font.PLAIN, font.getSize()));
}
} else if(IConstants.FONT_ITALIC.equals(actionComd)) {
//设置字体斜
Font font = fileText.getFont(); //文本域中当前字体
if(font.getStyle() != Font.ITALIC) {
fileText.setFont(new Font("宋体", Font.ITALIC, font.getSize()));
} else {
fileText.setFont(new Font("宋体", Font.PLAIN, font.getSize()));
}
}
}
/**
* 保存记事本文件信息
*/
private void saveFileContent() {
int result = 0;
if(fileName == null) {
result = fileChooser.showSaveDialog(jframe);
if(result == JFileChooser.APPROVE_OPTION) {
fileName = fileChooser.getSelectedFile().getAbsolutePath();
}
}
if(fileName != null) {
try {
//调用文件流操作实现类对文件进行保存操作
fileStreamOper.saveFile(fileName, fileText.getText());
// 将文件处理操作状态设置为已经保存标识
NoteActionListener.fileState = 2;
//设置一个提示框操作信息
this.setOptionPane("文件保存成功!", JOptionPane.INFORMATION_MESSAGE);
logWriter.log("save success",LogWriter.INFO);
} catch (FileStreamException e) {
//设置一个错误提示信息
this.setOptionPane("保存文件出错!", JOptionPane.ERROR_MESSAGE);
//将文件处理操作状态设置为未保存标识
NoteActionListener.fileState = 1;
System.err.println(e);
logWriter.log(e, "Can't register JDBC driver: " +
fileName, LogWriter.ERROR);
}
}
}
/**
* 获取文件内容
* @return String
*/
private String getFileContent() {
// FileDialog fileDialog = new FileDialog(jframe);
// fileDialog.show();
//通过JFileChooser对象进行文件选择操作
int result = fileChooser.showOpenDialog(jframe);
String fileContent = "";
try {
//如果选择了需要打开则调用文件流操作类进行操作
if(result == JFileChooser.APPROVE_OPTION) {
fileName = fileChooser.getSelectedFile().getAbsolutePath(); //获取文件绝对目录
jframe.setTitle(IConstants.FRAME_TITLE+">>>>>>"+fileName);
fileContent = fileStreamOper.openFile(fileName);
}
} catch (FileStreamException e) {
setOptionPane("打开文件失败", JOptionPane.ERROR_MESSAGE);
System.err.println(e);
}
return fileContent;
}
/**
* 设置提示框
*
* @param argMessage
* @param argOptionInfo
*/
private void setOptionPane(String argMessage, int argOptionInfo) {
JOptionPane.showMessageDialog(jframe, argMessage, "文本操作提示",
argOptionInfo);
}
/**
* 设置提示选择框
* @param argMessage
* @return
*/
private int setOptionMessage(String argMessage) {
int result = JOptionPane.showConfirmDialog(jframe, argMessage);
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -