⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpleeditor.java

📁 JDK实例宝典代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	 * 打开文件事件
	 */
	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 + -