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

📄 replacedialog.java

📁 记事本
💻 JAVA
字号:
package com.niit.NotaPad;

import javax.swing.*; 
import java.awt.event.*;

public class ReplaceDialog extends JDialog {
	private static final long serialVersionUID = 1001L;
	private JLabel label1, label2;
	private JCheckBox checkWord;
	private JTextField searchWord, repalceWord;
	private JTextArea text;
	private JRadioButton radioUp, radioDown; 
	//==============替换页面及其功能实现==================
	public ReplaceDialog(final JFrame frame, JTextArea textArea) {
		super(frame, "查找与替换");
		this.setBounds(300, 300, 390, 180);
		this.setVisible(true);
		this.setResizable(false);
		this.setLayout(null);
		text = textArea;
		label1 = new JLabel("查找内容:");
		label2 = new JLabel("替换为:");
		searchWord = new JTextField();
		searchWord.setText(textArea.getSelectedText());
		repalceWord = new JTextField();
		checkWord = new JCheckBox("区别大小写");
		radioUp = new JRadioButton("向上(U)");
		radioUp.setMnemonic('U');
		radioDown = new JRadioButton("向下(D)");
		radioDown.setMnemonic('D');
		radioDown.setSelected(true);
		ButtonGroup group = new ButtonGroup();
		group.add(radioUp);
		group.add(radioDown); 
		setmodel(label1, 5, 5, 65, 25);
		setmodel(label2, 5, 35, 65, 25);
		setmodel(searchWord, 85, 5, 140, 20);
		setmodel(repalceWord, 85, 40, 140, 20); 
		setmodel(radioUp,110,85,90,30);
		setmodel(radioDown,110,115,90,30);
		
		setmodel(checkWord, 7, 100, 90, 25);
		
		setmodel("查找下一个(N)", 'N', new SearchHandle(), 250, 5, 120, 25);
		setmodel("替换(R)", 'R', new ReplaceHandle(), 250, 40, 120, 25);
		setmodel("全部替换(A)", 'A', new ReplaceAllHandle(), 250, 75, 120, 25);
		setmodel("取消", 'a', new BackHandle(), 250, 110, 120, 25); 
	}

	// ==============初始化组件的方法===================
	public void setmodel(JComponent b, int i, int j, int k, int m) {
		b.setBounds(i, j, k, m);
		ReplaceDialog.this.add(b);
	}

	public void setmodel(String s, char c, ActionListener listener, int i,
			int j, int k, int m) {
		JButton b = new JButton(s);
		b.setMnemonic(c);
		b.addActionListener(listener);
		b.setBounds(i, j, k, m);
		ReplaceDialog.this.add(b);
	}

	// ===============Search 事件 ==================
	class SearchHandle implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			String s = searchWord.getText();
			String area = text.getText();
			if (s.length()==0) {
				JOptionPane.showMessageDialog(ReplaceDialog.this, "请输入查找内容");
			} else {
				// 判断区分大小写是否被选
				if (checkWord.isSelected()) {
					// 全部变成小写,付给局部变量
					String s1 = s.toLowerCase();
					String area1 = area.toLowerCase();
					// 判断搜索方向,现讨论的是向下搜索,同时判断用户输入不为空
					if (radioDown.isSelected()) {
						// 判断是否包含所要查找的内容
						if (area1.indexOf(s1, text.getCaretPosition()) != -1) {
							// 若存在,则文本选定返回查找到处 的索引,到字符串长度的字段
							text.select(area1.indexOf(s1, text
									.getCaretPosition()), area1.indexOf(s1,
									text.getCaretPosition())
									+ s.length());
						} else {
							JOptionPane.showMessageDialog(ReplaceDialog.this,
									"找不到" + s);
						}
					} else {
						// 为向后查找,并根据查找的次数,要断定是否是从光标处向后查找
						if (text.getSelectedText() != "") {
							if (area.lastIndexOf(s1, text.getCaretPosition()
									- (s.length() + 1)) != -1) {
								text.select(area.lastIndexOf(s1, text
										.getCaretPosition()
										- s.length() - 1), area.lastIndexOf(s1,
										text.getCaretPosition() - s.length()
												- 1)
										+ s.length());
							} else {
								JOptionPane.showMessageDialog(
										ReplaceDialog.this, "找不到" + s);
							}
						} else {// 当是第一次查找的时候
							if (area.lastIndexOf(s1, text.getCaretPosition()) != -1) {
								text.select(area.lastIndexOf(s1, text
										.getCaretPosition()), area.lastIndexOf(
										s1, text.getCaretPosition())
										+ s.length());
							} else {
								JOptionPane.showMessageDialog(
										ReplaceDialog.this, "找不到" + s);
							}
						}
					}
				} else {// 当没有选择不区别大小写的情况
					if (radioDown.isSelected()) {
						if (area.indexOf(s, text.getCaretPosition()) != -1) {
							text.select(area
									.indexOf(s, text.getCaretPosition()), area
									.indexOf(s, text.getCaretPosition())
									+ s.length());
						} else {
							JOptionPane.showMessageDialog(ReplaceDialog.this,
									"找不到" + s);
						}
					} else {// 判断是否是第一次向后查找
						if (text.getSelectedText() != "") {
							if (area.lastIndexOf(s, text.getCaretPosition()
									- s.length() - 1) != -1) {
								text.select(area.lastIndexOf(s, text
										.getCaretPosition()
										- s.length() - 1), area.lastIndexOf(s,
										text.getCaretPosition() - s.length()
												- 1)
										+ s.length());
							} else {
								JOptionPane.showMessageDialog(
										ReplaceDialog.this, "找不到" + s);
							}
						} else {// 第一次向后查找
							if (area
									.lastIndexOf(s, text.getCaretPosition() - 1) != -1) {
								text.select(area.lastIndexOf(s, text
										.getCaretPosition() - 1), area
										.lastIndexOf(s,
												text.getCaretPosition() - 1)
										+ s.length());
							} else {
								JOptionPane.showMessageDialog(
										ReplaceDialog.this, "找不到" + s);
							}
						}
					}
				}
			}

		}
	}

	// ================Replace事件 =================
	class ReplaceHandle implements ActionListener {

		public void actionPerformed(ActionEvent arg0) {  
			//判断是否已有查找到的信息,无就提示没有要替换的内容,有则替换之
			if(text.getSelectedText()==null)
			{
				JOptionPane.showMessageDialog(
						ReplaceDialog.this, "无可替换内容" );
			}else{
				text.replaceSelection(repalceWord.getText());
			}
		}
	}

	// ================ReplaceAll事件 ==================
	class ReplaceAllHandle implements ActionListener {

		public void actionPerformed(ActionEvent arg0) {
			String s = searchWord.getText().toString();
			String area = text.getText();
			int count = 0; 
			if(s.length()==0||repalceWord.getText().toString().length()==0)
			{
				JOptionPane.showMessageDialog(
						ReplaceDialog.this, "无可替换内容" );
			}
			else
			{
				//判断是否忽略大小写
				if (checkWord.isSelected()) {
					// 全部变成小写,付给局部变量
					String s1 = s.toLowerCase();
					String area1 = area.toLowerCase();
					//把每一个查询到 的信息都替换掉,count用户标记查找到的位置,故初始位置为0
					while (area.indexOf(s1, count) != -1) {
						text.replaceRange(repalceWord.getText(), area1.indexOf(s1,
								count), area1.indexOf(s1, count) + s.length());
						count = area1.indexOf(s1, count) + s.length();
					}
				} else {
					while (area.indexOf(s, count) != -1) {
						text.replaceRange(repalceWord.getText(), area.indexOf(s,
								count), area.indexOf(s, count) + s.length());
						count = area.indexOf(s, count) + s.length();
					}
				}
			} 
		}
	}

	// ================Back事件 ==================
	class BackHandle implements ActionListener {

		public void actionPerformed(ActionEvent arg0) {
			{
				ReplaceDialog.this.dispose();
			}
		}
	}
}

⌨️ 快捷键说明

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