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

📄 05151858102.java

📁 java记事本
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
			}
			else
			{
				jButton1.setEnabled(false);
			}
		}
		if ((e.getKeyCode() == 10 && e.getSource() == jButton2) || e.getKeyCode() == 27)
		{// 在"取消"按钮下按"Enter"键,或按"Esc"键
			jButton2.doClick();
		}
	}

	public void keyPressed(KeyEvent e)
	{// 按下某个键时调用此方法
	}
}

// **************************************************************************
// 替换类
class ReplaceJDialog extends JDialog implements ActionListener, KeyListener
{
	private final static long serialVersionUID = 1L;
	JTextArea textarea = new JTextArea();
	JButton jButton1 = new JButton();
	JButton jButton2 = new JButton();
	JButton jButton3 = new JButton();
	JButton jButton4 = new JButton();
	boolean check = false;// 是否区分大小写
	boolean findone = false;// 判断是否查到需要查找的内容
	boolean findtrue = false;// 判断是否有输入查找内容
	int replacenum = 0;// 判断全部替换时替换的个数
	int findallindex = 0;// 用于保存替换全部时更新每次替换后的鼠标位置
	JLabel jLabel1 = new JLabel();
	JLabel jLabel2 = new JLabel();
	JTextField jTextField1 = new JTextField();
	JTextField jTextField2 = new JTextField();
	JCheckBox jCheckBox1 = new JCheckBox("区分大小写(C)", false);
	JRadioButton[] teams = new JRadioButton[2];
	ButtonGroup jj = new ButtonGroup();
	String findstr = "";

	public ReplaceJDialog(JTextArea textarea, JFrame mainDialog)
	{
		super(mainDialog, "查找", false);
		this.textarea = textarea;
		try
		{
			findstr = textarea.getText();
			Init();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	public void Init() throws Exception
	{
		this.getContentPane().setLayout(null);
		this.setBounds(320, 240, 405, 150);
		// this.setTitle("查找");
		// this.setModal(true);// 此设置将使窗口不能与主窗口并行
		jButton1.setText("查找下一个(F)");
		jButton1.setBounds(new Rectangle(273, 12, 114, 20));
		jButton1.addActionListener(this);
		jButton1.setEnabled(false);
		// 查找下一个 ---加ALL+F组合键
		jButton1.setMnemonic(KeyEvent.VK_F);
		jButton3.setText("替换(R)");
		jButton3.setBounds(new Rectangle(273, 36, 114, 20));
		jButton3.addActionListener(this);
		jButton3.setEnabled(false);
		// 替换 ---加ALL+R组合键
		jButton3.setMnemonic(KeyEvent.VK_R);
		jButton4.setText("替换全部(A)");
		jButton4.setBounds(new Rectangle(273, 60, 114, 20));
		jButton4.addActionListener(this);
		jButton4.setEnabled(false);
		// 替换全部 ---加ALL+A组合键
		jButton4.setMnemonic(KeyEvent.VK_A);
		jButton2.setText("取消");
		jButton2.setBounds(new Rectangle(273, 84, 114, 20));
		jButton2.addActionListener(this);
		// 取消 ---加ESC组合键
		jButton2.setMnemonic(KeyEvent.VK_ESCAPE);
		jLabel1.setText("查找内容:");
		jLabel1.setBounds(new Rectangle(7, 12, 72, 20));
		jTextField1.setBounds(new Rectangle(78, 12, 182, 20));
		jTextField1.addActionListener(this);
		jTextField1.addKeyListener(this);
		jLabel2.setText("替换为:");
		jLabel2.setBounds(new Rectangle(7, 36, 72, 20));
		jTextField2.setBounds(new Rectangle(78, 36, 182, 20));
		jCheckBox1.setBounds(new Rectangle(7, 84, 115, 25));
		jCheckBox1.addActionListener(this);
		// 区分大小写 ---加ALL+C组合键
		jCheckBox1.setMnemonic(KeyEvent.VK_C);
		teams[0] = new JRadioButton("向上(U)", false);
		teams[0].setBounds(new Rectangle(122, 84, 70, 25));
		teams[0].addActionListener(this);
		// 向上查询 ---加ALL+U组合键
		teams[0].setMnemonic(KeyEvent.VK_U);
		teams[1] = new JRadioButton("向下(D)", true);
		teams[1].setBounds(new Rectangle(192, 84, 70, 25));
		teams[1].addActionListener(this);
		// 向下查询 ---加ALL+D组合键
		teams[1].setMnemonic(KeyEvent.VK_D);
		jj.add(teams[0]);
		jj.add(teams[1]);
		this.getContentPane().add(jButton1, null);
		this.getContentPane().add(jButton2, null);
		this.getContentPane().add(jButton3, null);
		this.getContentPane().add(jButton4, null);
		this.getContentPane().add(jLabel1, null);
		this.getContentPane().add(jLabel2, null);
		this.getContentPane().add(jTextField1, null);
		this.getContentPane().add(jTextField2, null);
		this.getContentPane().add(jCheckBox1, null);
		this.getContentPane().add(teams[0], null);
		this.getContentPane().add(teams[1], null);
		jButton1.addKeyListener(this);
		jButton2.addKeyListener(this);
		jButton3.addKeyListener(this);
		jButton4.addKeyListener(this);
		jTextField1.addKeyListener(this);
		jTextField2.addKeyListener(this);
		jCheckBox1.addKeyListener(this);
		teams[0].addKeyListener(this);
		teams[1].addKeyListener(this);
		this.addKeyListener(this);
	}

	public void actionPerformed(ActionEvent e)
	{
		if (e.getSource() == jTextField1)
		{
			if (!jTextField1.getText().equals(""))
			{
				jButton1.setEnabled(true);
				jButton3.setEnabled(true);
				jButton4.setEnabled(true);
			}
			else
			{
				jButton1.setEnabled(false);
				jButton3.setEnabled(false);
				jButton4.setEnabled(false);
			}
		}
		else if (e.getSource() == jButton1)
		{
			find();
		}
		else if (e.getSource() == jButton2)
		{
			setVisible(false);
		}
		else if (e.getSource() == jButton3)
		{
			replace();
		}
		else if (e.getSource() == jButton4)
		{
			replaceAll();
		}
		else if (e.getSource() == jCheckBox1)
		{
			if (check)
			{
				findstr = findstr.toLowerCase();
			}
			else
			{
				// 重新获取,以防上面已转换成小写的
				findstr = textarea.getText();
			}
			check = !check;
		}
	}

	public void processWindowEvent(WindowEvent e)
	{
		super.processWindowEvent(e);
		if (e.getID() == WindowEvent.WINDOW_CLOSED)
		{
			System.exit(0);
		}
	}

	public void find()
	{
		findstr = textarea.getText();// 重新取得当前内容
		String text1 = jTextField1.getText();// 要查找的内容
		if (!check)
		{// 不区分大小写
			text1 = text1.toLowerCase();// 转换成小写
		}
		int index, i = textarea.getSelectionStart(), t = textarea.getSelectionEnd();
		if (teams[0].isSelected())
		{// 向上还是向下查找
			String ftp = findstr.substring(0, i);
			index = ftp.lastIndexOf(text1);
			if (index != -1)
			{
				i = index - 1;
				textarea.select(index, index + text1.length());
			}
			else
			{
				JOptionPane.showMessageDialog(this, "找不到 " + jTextField1.getText(), "提示",
					JOptionPane.INFORMATION_MESSAGE);
			}
		}
		else
		{
			index = findstr.indexOf(text1, t);
			if (index != -1)
			{
				t = index + text1.length();
				textarea.select(index, index + text1.length());
			}
			else
			{
				JOptionPane.showMessageDialog(this, "找不到 " + jTextField1.getText(), "提示",
					JOptionPane.INFORMATION_MESSAGE);
			}
		}
		this.repaint();
	}

	// 用于替换时的查找功能
	public void findreplace()
	{
		findstr = textarea.getText();// 重新取得当前内容
		String text1 = jTextField1.getText();// 要查找的内容
		if (!check)
		{// 不区分大小写
			text1 = text1.toLowerCase();// 转换成小写
		}
		int index, i = textarea.getSelectionStart(), t = textarea.getSelectionEnd();
		if (teams[0].isSelected())
		{// 向上还是向下查找
			String ftp = findstr.substring(0, i);
			index = ftp.lastIndexOf(text1);
			if (index != -1)
			{
				i = index - 1;
				textarea.select(index, index + text1.length());
			}
			else
			{
				textarea.select(i, i);// 鼠标定位到较前方
			}
		}
		else
		{
			index = findstr.indexOf(text1, t);
			if (index != -1)
			{
				t = index + text1.length();
				textarea.select(index, index + text1.length());
			}
			else
			{
				textarea.select(t, t);// 鼠标定位到较后方
			}
		}
	}

	// 替换
	public void replace()
	{
		String text2 = jTextField2.getText();
		int star = textarea.getSelectionStart();
		int end = textarea.getSelectionEnd();
		if (star == end)
		{// 如果没有选择内容时,先查询要替换的字符串
			findreplace();
			// 重新选定内容
			star = textarea.getSelectionStart();
			end = textarea.getSelectionEnd();
		}
		else if (textarea.getSelectedText().equals(text2))
		{// 如果选择的内容等于要替换的内容时
			findreplace();// 重新查询
			// 重新选定内容
			star = textarea.getSelectionStart();
			end = textarea.getSelectionEnd();
		}
		if (star != end)
		{
			textarea.replaceRange(text2, star, end);
			textarea.select(star, star + text2.length());
		}
		else
		{
			JOptionPane.showMessageDialog(this, "找不到 " + jTextField1.getText(), "提示",
				JOptionPane.INFORMATION_MESSAGE);
		}
	}

	// 从头开始查找全文
	public boolean findAll(int index_tmp)
	{
		String allstr = textarea.getText();// 新的当前值
		String strtemp = allstr.substring(index_tmp, allstr.length());// 用于查找用的值
		findone = false;// 复原
		String text3 = jTextField1.getText();// 这个text3为要查找的内容
		if (!text3.equals(""))
		{
			if (!check)
			{// 不区分大小写
				text3 = text3.toLowerCase();// 转换成小写
			}
			int index, t = 0;
			index = strtemp.indexOf(text3, t);
			if (index != -1)
			{
				t = index + text3.length();
				textarea.select(index_tmp + index, index_tmp + index + text3.length());
				findallindex = index_tmp + index + jTextField2.getText().length();// 保存为要替换的下一个起始位置
				findone = true;
				replacenum++;
			}
			// System.out.println(findone);
			this.repaint();
			// System.out.println(findone+"\n");
		}
		return findone;
	}

	// 替换全部
	public void replaceAll()
	{
		findallindex = 0;
		while (findAll(findallindex))
		{
			String text3 = jTextField2.getText();// 这个text3要替换的内容
			int star = textarea.getSelectionStart();
			int end = textarea.getSelectionEnd();
			if (star != end)
			{
				textarea.replaceRange(text3, star, end);
			}
		}
		if (replacenum == 0)
		{// 如果一个都没有替换
			JOptionPane.showMessageDialog(this, "找不到 " + jTextField1.getText(), "提示",
				JOptionPane.INFORMATION_MESSAGE);
		}
		else
		{
			// 下面一行有个别字符在JCreator中不能显示,但运行时能显示
			JOptionPane.showMessageDialog(this, "总共替换了 " + replacenum + " 处……", "提示",
				JOptionPane.INFORMATION_MESSAGE);
			replacenum = 0;// 统计数清零
		}
	}

	public void keyTyped(KeyEvent e)
	{// 键入某个键时调用此方法。
	}

	public void keyReleased(KeyEvent e)
	{// 释放某个键时调用此方法。
		if (e.getSource() == jTextField1)
		{
			if (!jTextField1.getText().equals(""))
			{
				jButton1.setEnabled(true);
				jButton3.setEnabled(true);
				jButton4.setEnabled(true);
			}
			else
			{
				jButton1.setEnabled(false);
				jButton3.setEnabled(false);
				jButton4.setEnabled(false);
			}
		}
		if ((e.getKeyCode() == 10 && e.getSource() == jButton2) || e.getKeyCode() == 27)
		{// 在"取消"按钮下按"Enter"键,或按"Esc"键
			jButton2.doClick();
		}
	}

	public void keyPressed(KeyEvent e)
	{// 按下某个键时调用此方法
	}
}
// 帮助的关于对话框行为
// class TestAbout extends JDialog implements ActionListener, KeyListener {
// private final static long serialVersionUID = 1L;
// public TestAbout(JFrame mainDialog) {
// super(mainDialog, "关于", false);//true不可以并行,false可以并行
// Container contentPane = getContentPane();
// contentPane.add(new JLabel("<html><body><center><h3>这个窗口可以并行啊!!</h3></center></body></html>"),
// BorderLayout.CENTER);
// JPanel p = new JPanel();
// setResizable(false);
// contentPane.add(p, BorderLayout.SOUTH);
// setSize(300, 200);
// }
// }

⌨️ 快捷键说明

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