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

📄 searchdialog.java

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

import javax.swing.*;

import java.awt.FlowLayout;
import java.awt.event.*;

public class SearchDialog extends JDialog {
	private static final long serialVersionUID = 1001L;
	private JLabel label;
	private JButton searchNext, back;
	private JCheckBox checkWord;
	private JRadioButton radioUp, radioDown;
	private JTextField field;
	private JTextArea text;
	private JPanel panel, panelR;
	//=============查找功能的实现===============
	public SearchDialog(final JFrame frame, final JTextArea textArea) {

		super(frame, "查找");
		text = textArea;
		label = new JLabel("要查询的内容:");
		field = new JTextField("", 10);
		field.setText(textArea.getSelectedText());
		searchNext = new JButton("下一个(N)");
		searchNext.setMnemonic('n');
		back = new JButton("取消");
		checkWord = new JCheckBox("不区分大小写(C)");
		checkWord.setMnemonic('C');
		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);
		panelR = new JPanel();
		panelR.add(radioUp);
		panelR.add(radioDown);
		panelR.setBorder(BorderFactory.createTitledBorder("方向"));
		JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 5));
		panel1.add(label);
		panel1.add(field);
		panel1.add(searchNext);
		panel = new JPanel();
		panel.add(panel1);
		panel.add(checkWord);
		panel.add(panelR);
		panel.add(back);
		add(panel);
		setSize(350, 140);
		setResizable(false);
		setLocation(400, 300);
		setVisible(true);  
		searchNext.addActionListener(new SearchHandle());
		// ================取消窗口事件 =================
		back.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				{
					SearchDialog.this.dispose();
				}
			}
		});

	}
	// ===============Search 事件 ==================
	class SearchHandle implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			String s = field.getText();
			String area = text.getText();
			if (s.length()==0) {
				JOptionPane.showMessageDialog(SearchDialog.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(SearchDialog.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(
										SearchDialog.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(
										SearchDialog.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(SearchDialog.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(
										SearchDialog.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(
										SearchDialog.this, "找不到" + s);
							}
						}
					}
				}
			}

		}
	}

}

⌨️ 快捷键说明

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