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

📄 searchstring.java

📁 记事本
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class searchString implements ActionListener{
	GUI gui;
	JDialog jdg;                            //对话框
	static JTextField jtf=new JTextField();//查找文本信息框
	JButton jbnext=new JButton("查找下一个");
	JButton jbncancel=new JButton("取消");
	//单选按钮组
	ButtonGroup bg=new ButtonGroup();
	JRadioButton up=new JRadioButton("向上",true);
	JRadioButton down=new JRadioButton("向下",false);
	//复选框
	JCheckBox div=new JCheckBox("区分大小写");
	//
	public searchString(){}
	public searchString(GUI gui)
	{
		jdg=new JDialog(GUI.jf,"查找");
		this.gui=gui;
		//布局设置
		JPanel p0=new JPanel(new BorderLayout());
		p0.add(new JLabel("查找内容:"),BorderLayout.WEST);
		p0.add(jtf,BorderLayout.CENTER);
		//
		JPanel p2=new JPanel(new GridLayout(1,2));
		bg.add(up);
		bg.add(down);
		p2.add(up);
		p2.add(down);
		p2.setBorder(BorderFactory.createTitledBorder("方向"));
		//
		JPanel p1=new JPanel(new BorderLayout());
		p1.add(div,BorderLayout.WEST);
		p1.add(p2,BorderLayout.CENTER);
		//
		JPanel p4=new JPanel(new BorderLayout());
		p4.add(p0,BorderLayout.NORTH);
		p4.add(p1,BorderLayout.CENTER);
		//按钮设置
		JPanel p3=new JPanel(new GridLayout(4,1));
		p3.add(jbnext);
		jbnext.addActionListener(this);
		jbncancel.addActionListener(this);
		p3.add(jbncancel);
		//对话框设置
		jdg.setLayout(new BorderLayout());
		jdg.setSize(new Dimension(320,130));
		jdg.add(p4,BorderLayout.CENTER);
		jdg.add(p3,BorderLayout.EAST);
	}
	//事件响应
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==jbnext)
		{//“查找”
			if(up.isSelected()){
				//获取起始查找位置 GUI.jt.getCaret().getDot()获取光标位置
				int i=GUI.jt.getCaret().getDot()+
					cal10( GUI.jt.getText().substring(0,GUI.jt.getCaret().getDot()) )-1;
				//向前寻找
				findpre(GUI.jt.getText(),i,jtf.getText(),div.isSelected());
			}
			else{
				//获取起始查找位置
				int i=GUI.jt.getCaret().getDot()+
					cal10( GUI.jt.getText().substring(0,GUI.jt.getCaret().getDot() ) )+1;
				//向后寻找
				findnext(GUI.jt.getText(),i,jtf.getText(),div.isSelected());
			}
		}
		//“取消”
		else if(e.getSource()==jbncancel)
		{
			this.jdg.dispose();
		}
	}
	
	//向后查找
	public void findnext(String src,int start,String dis,boolean bool)
	{
		//不区分大小写
		if(!bool){
			for(int i=start;i<src.length()-dis.length();i++)
				if( dis.equalsIgnoreCase(src.substring(i, i+dis.length())) )
				{
					setSelect(i-cal10(src.substring(0,i)),dis.length());
					return;
				}
		}
		//区分大小写
		else{
			for(int i=start;i<src.length()-dis.length();i++)
				if( dis.equals(src.substring(i, i+dis.length())) )
				{
					setSelect(i-cal10(src.substring(0,i)),dis.length());
					return;
				}
		}
		//提示没有找到
		JOptionPane.showMessageDialog(null, "找不到“"+dis+"”", "记事本", JOptionPane.OK_OPTION);
	}
	//向前查找
	public void findpre(String src,int start,String dis,boolean bool)
	{
		//不区分大小写
		if(!bool){
			for(int i=start-dis.length();i>=0;i--)
				if( dis.equalsIgnoreCase(src.substring(i, i+dis.length())) )
				{
					setSelect(i-cal10(src.substring(0,i)),dis.length());
					return;
				}
		}
		//区分大小写
		else{
			for(int i=start-dis.length();i>=0;i--)
				if( dis.equals(src.substring(i, i+dis.length())) )
				{
					setSelect(i-cal10(src.substring(0,i)) , dis.length() );
					return;
				}
		}
		//提示没有找到
		JOptionPane.showMessageDialog(null, "找不到“"+dis+"”", "记事本", JOptionPane.OK_OPTION);
	}
	
	//计算换行符数
	int cal10(String str)
	{
		int n=0;
		for(int i=0;i<str.length();i++)
			if((char)str.charAt(i)==10) n++;
		return n;
	}
	
	//设置查找到的字符串
	public void setSelect(int i,int length)
	{
		GUI.jt.requestFocus();
		GUI.jt.setSelectionStart(i);
		GUI.jt.setSelectionEnd(i+length);
		searchString.jtf.requestFocus();
	}
}

⌨️ 快捷键说明

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