📄 searchstring.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 + -