📄 simpleeditor.java
字号:
* 打开文件事件
*/
class Act_OpenFile implements ActionListener {
public void actionPerformed(ActionEvent e_ji1) {
//打开已有文件
//将文件选择器置为打开文件状态
fileChooser_control = 0;
fileChooser.setApproveButtonText("打开");
fileChooser.addChoosableFileFilter(fileFilter);
dialogFrame.getContentPane().add(fileChooser);
dialogFrame.setSize(550, 350);
dialogFrame.setTitle("请选择要打开的文件!");
dialogFrame.setVisible(true);
fileTextAreas[textAreas_control].setCaretPosition(0);
}
}
/**
* 保存文件事件
*/
class Act_SaveFile implements ActionListener {
public void actionPerformed(ActionEvent e_ji2) {
System.out.println("Act_SaveFile" + textAreas_control);
if (newFileFlags[textAreas_control]) {
//对于新建的文件,需要指定文件存储路径,因此调用了文件选择起存储文件
//将文件选择器置为保存文件状态
fileChooser_control = 1;
fileChooser.setApproveButtonText("保存");
fileChooser.addChoosableFileFilter(fileFilter);
dialogFrame.getContentPane().add(fileChooser);
dialogFrame.setTitle("请输入文件名!");
dialogFrame.setSize(550, 350);
dialogFrame.setVisible(true);
} else {
try {
//对于已经存在的文件,直接保存
//写文件,将当前文本域中文本写入到文件。
fileWriter = new FileWriter(directory[textAreas_control] + "/"
+ fileTabbedPane.getTitleAt(textAreas_control));
fileWriter.write(fileTextAreas[textAreas_control].getText());
fileWriter.close();
} catch (Exception e_save) {
JOptionPane.showMessageDialog(null, "读取发生错误");
}
}
}
}
/**
* 退出编辑器事件
*/
class Act_ExitEditor implements ActionListener {
public void actionPerformed(ActionEvent e_ji3) {
//退出编辑器
exitEditor();
}
}
/**
* 查找事件
*/
class Act_Find implements ActionListener {
public void actionPerformed(ActionEvent e_ji4) {
//查找对话框
findWord = JOptionPane
.showInputDialog("请输入查找内容");
if (findWord == null) {
JOptionPane.showMessageDialog(null, "查找失败!");
} else {
//根据查找内容在当前文本域中进行匹配
fingWordLength = findWord.length();
currentTextInTextArea = fileTextAreas[textAreas_control].getText();
findIndex = currentTextInTextArea.indexOf(findWord);
if (findIndex < 0){
JOptionPane.showMessageDialog(null,
" 查找内容不存在 ");
} else {
//如果找到了,则将鼠标键盘焦点放在当前文本域中,并将匹配字符串标示出来
fileTextAreas[textAreas_control].requestFocus();
fileTextAreas[textAreas_control].select(findIndex, findIndex + fingWordLength);
}
}
}
}
/**
* 查找下一个事件
*/
class Act_FindNext implements ActionListener {
public void actionPerformed(ActionEvent e_ji4_next) {
//查找下一个匹配的字符串
currentTextInTextArea = fileTextAreas[textAreas_control].getText();
findIndex = currentTextInTextArea.indexOf(findWord, findIndex + 1);
if (findIndex < 0) {
JOptionPane.showMessageDialog(null,
" 查找已经到达文件尾! ");
} else {
fileTextAreas[textAreas_control].select(findIndex, findIndex + fingWordLength);
}
}
}
/**
* 替换事件
*/
class Act_Replace implements ActionListener {
public void actionPerformed(ActionEvent e_ji5) {
//替换对话框
Object[] endButton1 = { "Replace", "Cancel" };
String message1 = "确认替换?";
currentTextInTextArea = fileTextAreas[textAreas_control].getText();
//获取被替换的内容
String seek_word = JOptionPane
.showInputDialog("请输入查找内容");
//获取替换后的内容
String replace_word = JOptionPane
.showInputDialog("请输入替换内容");
//如果用户输入的查找内容不为null,则开始进行替换操作
if (seek_word != null) {
//获取查找内容的长度,也就是将来替换的长度
replaceLength = seek_word.length();
while (true) {
//先获取当前文本域的文本,再进行查找
currentTextInTextArea = fileTextAreas[textAreas_control].getText();
findIndex = currentTextInTextArea.indexOf(seek_word, findIndex + replaceLength);
if (findIndex < 0) {
//文本中不存在查找内容
JOptionPane.showMessageDialog(null,
"查找已经到达文件尾!");
break;
} else {
//查找成功,则标示出查找内容
fileTextAreas[textAreas_control].requestFocus();
fileTextAreas[textAreas_control].select(findIndex, findIndex + replaceLength);
//替换确认
JOptionPane end1 = new JOptionPane(message1,
JOptionPane.WARNING_MESSAGE,
JOptionPane.DEFAULT_OPTION, null, endButton1);
JDialog endD1 = end1.createDialog(end1, "请选择");
endD1.setVisible(true);
Object push1 = end1.getValue();
if (push1 == endButton1[0]){
//如果用户选择替换,则将文本域中被标示的文字用replace替换
fileTextAreas[textAreas_control].replaceSelection(replace_word);
}
}
}
}
}
}
/**
* 编译compile事件
*/
class Act_Compile implements ActionListener {
public void actionPerformed(ActionEvent e_ji6) {
//compile一个java源文件
//控制台信息
consoleTextArea.setText(null);
//目前只支持编译java类
if ((fileTabbedPane.getTitleAt(textAreas_control)).indexOf(".java") > -1) {
try {
int count;
byte input[] = new byte[256];
String InputString;
// 编译java源文件的命令"javac"
String[] command = {
"javac",
directory[textAreas_control] + "/"
+ fileTabbedPane.getTitleAt(textAreas_control) };
//当前应用程序启动一个新进程,用于执行命令
Process p = Runtime.getRuntime().exec(command);
//读取执行命令时的错误输出
BufferedInputStream bufin = new BufferedInputStream(p.getErrorStream());
//这里仅仅读取前1024个字节
bufin.mark(1024);
count = bufin.read(input);
if (count <= 0){
//编译没有错误
consoleTextArea.append("Compile to " + fileTabbedPane.getTitleAt(textAreas_control)
+ " Success");
} else {
//编译失败
InputString = new String(input, 0, count);
consoleTextArea.append("Compile to " + fileTabbedPane.getTitleAt(textAreas_control)
+ " Fail\n" + InputString);
}
} catch (IOException e) {
System.err.println("IO error: " + e);
}
} else {
consoleTextArea.append(fileTabbedPane.getTitleAt(textAreas_control)
+ " is not a java File !\n Please Check it again!");
}
}
}
/**
* 运行build事件
*/
class Act_Build implements ActionListener {
public void actionPerformed(ActionEvent e_ji7) {
//build一个Java类
consoleTextArea.setText(null);
if ((fileTabbedPane.getTitleAt(textAreas_control)).indexOf(".java") > -1) {
try {
int count;
byte input[] = new byte[256];
String InputString;
//获取java类的名字,去掉java源文件名的后五个字母".java"
String class_name;
int length = (fileTabbedPane.getTitleAt(textAreas_control)).length();
class_name = (fileTabbedPane.getTitleAt(textAreas_control)).substring(0,
length - 5);
//运行java类的命令"java"
String[] command = { "java", "-classpath",
directory[textAreas_control], class_name };
Process p = Runtime.getRuntime().exec(command);
BufferedInputStream bufin = new BufferedInputStream(p
.getErrorStream());
bufin.mark(256);
count = bufin.read(input);
if (count <= 0){
//运行没有错误
consoleTextArea.append("Build to " + fileTabbedPane.getTitleAt(textAreas_control)
+ " Success");
} else {
//运行有错误
InputString = new String(input, 0, count);
consoleTextArea.append("Builld to " + fileTabbedPane.getTitleAt(textAreas_control)
+ " Fail\n" + InputString);
}
} catch (IOException e) {
System.err.println("IO error: " + e);
} catch (IndexOutOfBoundsException e2) {
System.err.println("IO error: " + e2);
}
} else {
consoleTextArea.append(fileTabbedPane.getTitleAt(textAreas_control)
+ " is not a java File !\n Please Check it again!");
}
}
}
/**
* 显示帮助Help事件
*/
class Act_Help implements ActionListener {
public void actionPerformed(ActionEvent e_ji9) {
helpFrame.pack();
helpFrame.setVisible(true);
helpFrame.requestFocus();
helpFrame.setLocation(200, 0);
}
}
class Act_Copy implements ActionListener {
public void actionPerformed(ActionEvent e_ji9) {
//复制事件,直接调用JTextArea的copy方法
fileTextAreas[textAreas_control].copy();
}
}
class Act_Cut implements ActionListener {
public void actionPerformed(ActionEvent e_ji10) {
//剪贴事件,直接调用JTextArea的cut方法
fileTextAreas[textAreas_control].cut();
}
}
class Act_Paste implements ActionListener {
public void actionPerformed(ActionEvent e_ji11) {
//粘贴事件,直接调用JTextArea的paste方法
fileTextAreas[textAreas_control].paste();
}
}
/**
* 动画显示事件
*/
class Act_timer implements ActionListener {
public void actionPerformed(ActionEvent e_time) {
//Flash显示,一共就4个图片文件,按顺序显示
if (timerControl > 4){
timerControl = 0;
}
flashLabel.setIcon(new ImageIcon(loadImage("image/Juggler" + timerControl
+ ".gif")));
timerControl++;
}
}
/**
* 停止动画事件
*/
class Act_StopFlash implements ActionListener {
public void actionPerformed(ActionEvent E_stop) {
//Flash控制。停止动画
timer.stop();
startFlashMenuItem.setEnabled(true);
stopFlashMenuItem.setEnabled(false);
}
}
/**
* 启动动画事件
*/
class Act_StartFlash implements ActionListener {
public void actionPerformed(ActionEvent E_start) {
//Flash控制。启动动画
timer.start();
startFlashMenuItem.setEnabled(false);
stopFlashMenuItem.setEnabled(true);
}
}
/**
* 从jar包中读取图片文件
* @param name
* @return 返回一个图片对象
*/
private java.awt.Image loadImage(String name) {
try {
java.net.URL url = getClass().getResource(name);
//根据URL中内容新建一个图片文件
return createImage((java.awt.image.ImageProducer) url.getContent());
} catch (Exception ex) {
return null;
}
}
public static void main(String args[]) {
new SimpleEditor();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -