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

📄 bookeditor.java

📁 本程序用Java描述了一个类似windows自带的记事本的功能
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
					saveFile();                         //调用保存方法
					Text.setText("");
					this.setTitle("新建文本");
					statusLabel.setText(" 新建文本");
				}
			}
			else if (saveChoose == JOptionPane.NO_OPTION) {
				System.exit(0);
			}
			else Text.requestFocus();
		}
		else 
			System.exit(0);
	}

	public void checkMenuItemEnabled() {      //定义方法设置剪切、复制、粘贴等功能键的可用性
		String selectText = Text.getSelectedText();

		if (selectText == null) {              //剪切,复制功能可用性判断
			mEdit_Cut.setEnabled(false);
			rightclickMenu_Cut.setEnabled(false);
			mEdit_Copy.setEnabled(false);
			rightclickMenu_Copy.setEnabled(false);
		} else {
			mEdit_Cut.setEnabled(true);
			rightclickMenu_Cut.setEnabled(true);
			mEdit_Copy.setEnabled(true);
			rightclickMenu_Copy.setEnabled(true);
			rightclickMenu_Delete.setEnabled(true);
		}

		                                        // 粘贴功能可用性判断
		Transferable contents = clipBoard.getContents(this);
		if (contents == null) {
			mEdit_Paste.setEnabled(false);
			rightclickMenu_Paste.setEnabled(false);
		} else {
			mEdit_Paste.setEnabled(true);
			rightclickMenu_Paste.setEnabled(true);
		}
	}
	public void saveFile() {                             //保存当前文本,并导出相应文件
		try {
			FileWriter fw = new FileWriter(saveFileName); //根据获取的文件对象新建文件
			fw.write(Text.getText());                      //向新建的文件写入文本框的内容
			fw.close();                                    //关闭记录集
		} catch (Exception e) {}
	}

	public void searchAndreplace() {                              //查找与替换方法
		final JDialog findDialog = new JDialog(this, "查找与替换", true);
		Container con = findDialog.getContentPane();
		con.setLayout(new FlowLayout(FlowLayout.LEFT));
		JLabel searchContentLabel = new JLabel("查找内容 :");
		JLabel replaceContentLabel = new JLabel("替换内容 :");
		final JTextField findText = new JTextField(22);
		final JTextField replaceText = new JTextField(22);
		final JCheckBox matchcase = new JCheckBox("区分大小写");
		JButton searchNext = new JButton("查找下一个");
		JButton replace = new JButton("替换");
		JButton replaceAll = new JButton("全部替换");
		searchNext.setPreferredSize(new Dimension(130, 22));         //设置按键的大小
		replace.setPreferredSize(new Dimension(130, 22));
		replaceAll.setPreferredSize(new Dimension(130, 22));
		// "替换"按钮的事件处理
		replace.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				if (replaceText.getText().length() == 0 && Text.getSelectedText() != null)
					Text.replaceSelection("");
				if (replaceText.getText().length() > 0 && Text.getSelectedText() != null)
					Text.replaceSelection(replaceText.getText());
			}
		});

		// "替换全部"按钮的事件处理
		replaceAll.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				Text.setCaretPosition(0); // 将光标放到编辑区开头
				int a = 0, replaceCount = 0;                  //定义查找内容位置记录集及查找到相同内容的次数记录集

				if (findText.getText().length() == 0) {
					JOptionPane.showMessageDialog(findDialog, "请填写查找内容!", "提示", JOptionPane.WARNING_MESSAGE);
					findText.requestFocus(true);
					return;
				}
				while (a > -1) {                                //替换全部的循环操作控制,当搜索结果为空时停止
					int FindStartPos = Text.getCaretPosition(); //获取每次搜索前的光标位置
					String strA, strB;                           //定义记录集分别记录文本内容及搜索内容
					if (matchcase.isSelected()) {               //判断大小写敏感搜索选择
						strA = Text.getText();                  
						strB = findText.getText();
					} 
					else {
						strA = Text.getText().toLowerCase();    //若选择大小写不敏感,则使用全部记录小写再搜索的办法
						strB = findText.getText().toLowerCase();
					}
					if (Text.getSelectedText() == null) {
						a = strA.indexOf(strB, FindStartPos);           //利用indexOf查找与搜索内容匹配的字符串的位置
					} 
					else {                                           //如果文本不存在查找内容则返回-1
						a = strA.indexOf(strB, FindStartPos - findText.getText().length() + 1);
					}
					if (a > -1) {                                      
						Text.setCaretPosition(a);                     //当返回搜索内容位置时在原文中选中它
						Text.select(a, a + findText.getText().length());
					} 
					else {
						if (replaceCount == 0) {
							JOptionPane.showMessageDialog(findDialog, "找不到您查找的内容!", "记事本", JOptionPane.INFORMATION_MESSAGE);
						} 
						else {
							JOptionPane.showMessageDialog(findDialog, "成功替换" + replaceCount + "个匹配内容!", "替换成功", JOptionPane.INFORMATION_MESSAGE);
						}
					}
					if (replaceText.getText().length() == 0 && Text.getSelectedText() != null) {
						Text.replaceSelection("");                 //若替换内容为空则是选中内容变为空
						replaceCount++;
					}
					if (replaceText.getText().length() > 0 && Text.getSelectedText() != null) {
						Text.replaceSelection(replaceText.getText()); //替换选中内容
						replaceCount++;
					}
				}
			}
		});

		// "查找下一个"按钮事件处理
		searchNext.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int a = 0;                                   //定义查找内容位置记录集
				int FindStartPos = Text.getCaretPosition();   //获取每次搜索前的光标位置
				String strA, strB;                            //定义记录集分别记录文本内容及搜索内容
				if (matchcase.isSelected()) {               //判断大小写敏感搜索选择
					strA = Text.getText();                  
					strB = findText.getText();
				} else {
					strA = Text.getText().toLowerCase();    //若选择大小写不敏感,则使用全部记录小写再搜索的办法
					strB = findText.getText().toLowerCase();
				}
				if (Text.getSelectedText() == null) {
					a = strA.indexOf(strB, FindStartPos);       //利用indexOf查找与搜索内容匹配的字符串的位置
				}
				else {
					a = strA.indexOf(strB, FindStartPos - findText.getText().length() + 1);
				}
				if (a > -1) {
					Text.setCaretPosition(a);                  //当返回搜索内容位置时在原文中选中它
					Text.select(a, a + findText.getText().length());
				} 
				else {
					JOptionPane.showMessageDialog(null, "找不到您查找的内容!", "记事本", JOptionPane.INFORMATION_MESSAGE);
				}

			}
		});
		JButton back = new JButton("返回");                 // "返回"按钮及事件处理,使用时消除该对话框
		back.setPreferredSize(new Dimension(86, 22));
		back.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				findDialog.dispose();                   //dispose将该对话框操作所使用内存返回,并使对话框不可显示
			}
		});

		// 创建"查找与替换"对话框的界面
		JPanel bottomPanel = new JPanel();           //定义各控件排版容器
		JPanel centerPanel = new JPanel();
		JPanel topPanel = new JPanel();

		topPanel.add(searchContentLabel);             //在各个容器中添加控件
		topPanel.add(findText);
		topPanel.add(matchcase);
		centerPanel.add(replaceContentLabel);
		centerPanel.add(replaceText);
		centerPanel.add(back);
		bottomPanel.add(searchNext);
		bottomPanel.add(replace);
		bottomPanel.add(replaceAll);

		con.add(topPanel);                           //添加并设置各控件排版容器顺序
		con.add(centerPanel);
		con.add(bottomPanel);

		// 设置"查找与替换"对话框属性
		findDialog.setSize(430, 160);                 //设置对话框大小
		findDialog.setResizable(false);              //设置对话框为大小不可变
		findDialog.setLocation(200, 200);             //设置显示时的屏幕初始位置坐标
		findDialog.setVisible(true);                 //设置对话框为可见
	}

	public void actionPerformed(ActionEvent e) {
		// 新建
		if (e.getActionCommand().equals("新建(N)")){
			Text.requestFocus();
			if (!Text.getText().equals(oldValue)) {
				int saveChoose = JOptionPane.showConfirmDialog(this, "您的文件尚未保存。是否保存?", "提示", JOptionPane.YES_NO_CANCEL_OPTION);
				if (saveChoose == JOptionPane.YES_OPTION) {
					JFileChooser fileChooser = new JFileChooser();    //定义文件选择框
					fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
					fileChooser.setApproveButtonText("确定");
					fileChooser.setDialogTitle("另存为");
					int result = fileChooser.showSaveDialog(this);
					if (result == JFileChooser.CANCEL_OPTION) {
						statusLabel.setText("您没有选择任何文件");
						return;
					}
					saveFileName = fileChooser.getSelectedFile();
					if (saveFileName == null || saveFileName.getName().equals(""))
						JOptionPane.showMessageDialog(this, "不合法的文件名", "不合法的文件名", JOptionPane.ERROR_MESSAGE);
					else {
						saveFile();                               //调用保存方法
						Text.setText("");
						this.setTitle("新建文本");
						statusLabel.setText(" 新建文本");
					}
				} 
				else if (saveChoose == JOptionPane.NO_OPTION) {
					Text.replaceRange("", 0, Text.getText().length());
					statusLabel.setText(" 新建文件");
					this.setTitle("无标题 - 记事本");
					isNewFile = true;                      //判断是否更改文件未保存设置的修改
					undo.discardAllEdits();                 // 撤消所有的"撤消"操作
					mEdit_Undo.setEnabled(false);
					rightclickMenu_Undo.setEnabled(false);
					oldValue = Text.getText();
				} 
				else return;
			} else {
				Text.setText("");
				statusLabel.setText(" 新建文件");
				this.setTitle("无标题 - 记事本");
				isNewFile = true;                      //判断是否更改文件未保存设置的修改
				undo.discardAllEdits();
				mEdit_Undo.setEnabled(false);
				rightclickMenu_Undo.setEnabled(false);
				oldValue = Text.getText();
			}
		}

		// 打开
		else if (e.getActionCommand().equals("打开(O)")){
			Text.requestFocus();
			if (!Text.getText().equals(oldValue)) {
				int saveChoose = JOptionPane.showConfirmDialog(this, "您的文件尚未保存。是否保存?", "提示", JOptionPane.YES_NO_CANCEL_OPTION);

				if (saveChoose == JOptionPane.YES_OPTION) {
					JFileChooser fileChooser = new JFileChooser();    //定义文件选择框
					fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
					fileChooser.setApproveButtonText("确定");
					fileChooser.setDialogTitle("另存为");
					
					if (fileChooser.showSaveDialog(this) == JFileChooser.CANCEL_OPTION) {
						statusLabel.setText("您没有选择任何文件");
						return;
					}

					saveFileName = fileChooser.getSelectedFile();

					if (saveFileName == null || saveFileName.getName().equals(""))
						JOptionPane.showMessageDialog(this, "不合法的文件名", "不合法的文件名", JOptionPane.ERROR_MESSAGE);
					else {
						saveFile();                             //调用保存方法
						isNewFile = false;                      //判断是否更改文件未保存设置的修改

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -