📄 finddialog.java
字号:
package note;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
/*
* findDialog.java
*
* Created on 2008年4月23日, 上午2:39
*/
/**
*
* @author Xium
*/
public class findDialog extends JFrame {
/**
*
*/
private static final long serialVersionUID = 4452566304104956834L;
/** 此方法创建一个findDialog */
public findDialog() {
initComponents();
}
/****************本方法实现了 finddialog 的界面. *********************/
private void initComponents() {
buttonGroup1 = new ButtonGroup(); //按钮组,将单选按钮添加到按钮组内 可以实现单选
jbt_find = new JButton();//查找按钮
jTextField_text = new JTextField();// 查找文本框
jcb_box = new javax.swing.JCheckBox();//多选框(是否区分大小写)
jbt_close = new javax.swing.JButton();//关闭按钮
jrb_find_up = new JRadioButton();//向上查找 (单选)
jrb_find_down = new JRadioButton();//向下查找(单选)
/**********将单选按钮添加到按钮组内 可以实现单选**************/
buttonGroup1.add(jrb_find_down);
buttonGroup1.add(jrb_find_up);
setDefaultCloseOperation(findDialog.DISPOSE_ON_CLOSE);
setTitle("查找");
setBackground(new Color(204, 204, 255));
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
jbt_find.setBackground(new Color(204, 204, 255));
jbt_find.setText("查找下一个");
jbt_find.setBorderPainted(false);
/****************查找按钮事件监听*********************/
jbt_find.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jbt_findActionPerformed(evt);
}
});
/****************查找文本框的事件监听*********************/
jTextField_text.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent evt) {
jTextCaretUpdate(evt);
}
});
jcb_box.setBackground(new Color(204, 204, 255));
jcb_box.setText("大小写敏感");
jcb_box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jcb_boxActionPerformed(evt);
}
});
jbt_close.setBackground(new Color(204, 204, 255));
jbt_close.setText("取消");
jbt_close.setBorderPainted(false);
/****************取消按钮事件监听*********************/
jbt_close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jbt_closeActionPerformed(evt);
}
});
jrb_find_down.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jrb_findActionPerformed(evt);
}
});
jrb_find_up.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jrb_findActionPerformed(evt);
}
});
jrb_find_up.setBackground(new Color(204, 204, 255));
jrb_find_up.setText("向上");
jrb_find_down.setBackground(new Color(204, 204, 255));
jrb_find_down.setText("向下");
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(jTextField_text, GroupLayout.DEFAULT_SIZE, 349, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGap(2, 2, 2)
.addComponent(jcb_box, GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbt_find, GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jrb_find_up, GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
.addGap(4, 4, 4)
.addComponent(jrb_find_down, GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbt_close, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jTextField_text, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(jbt_find)
.addComponent(jcb_box)
.addComponent(jrb_find_down)
.addComponent(jbt_close)
.addComponent(jrb_find_up))
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jrb_find_down, jrb_find_up, jbt_close, jbt_find, jcb_box});
pack();
}// intComponents 方法结束
/****************区分大小写按钮事件处理*********************/
private void jcb_boxActionPerformed(java.awt.event.ActionEvent evt) {
}
/****************取消按钮事件处理*********************/
private void jbt_closeActionPerformed(java.awt.event.ActionEvent evt) {
setVisible(false);
}
/****************查找按钮事件处理
* 在此处实现了 *****查找的各个功能****************/
public void jbt_findActionPerformed(java.awt.event.ActionEvent evt) {
String str_find=jTextField_text.getText().trim(); //从输入查找文本框中获取文本
int str_find_len=str_find.length(); //计算输入文本的长度
String str_jtextarea=Note.fileArea.getText(); //获取文本区中的文本
String str_up_find; //设置为向上查找的字符串
int str_first_index; //设置为向下查找的初始值
if(jcb_box.isSelected()) //判断是否区分大小写,如果选择区分大小写则执行
{
/************** 向上查找 ********************/
if(jrb_find_up.isSelected())
{
if(Note.fileArea.getCaretPosition() == 0){
jbt_find.setEnabled(false);
}
else {
str_up_find=Note.fileArea.getText().substring(0,Note.fileArea.getCaretPosition()-str_find_len);
int str_last_index=str_up_find.lastIndexOf(str_find);
if(str_last_index!=-1)
{
Note.fileArea.select(str_last_index,str_last_index+str_find_len);
str_up_find=str_up_find.substring(0,str_last_index);
}
else
{
JOptionPane.showMessageDialog(null,"找不到“ "+str_find+" ”(查找完毕)","记事本",JOptionPane.QUESTION_MESSAGE);
jTextField_text.selectAll();
jTextField_text.requestFocus(true);
jbt_find.setEnabled(false);
}}
}
/************** 向下查找 ********************/
if(jrb_find_down.isSelected())
{
str_first_index=Note.fileArea.getCaretPosition();
int str_find_index=str_jtextarea.indexOf(str_find,str_first_index); //查找字符串出现的位置,如果没找到则返回-1
if(str_find_index==-1)
{
JOptionPane.showMessageDialog(null,"找不到“ "+str_find+" ”(查找完毕)","记事本",JOptionPane.QUESTION_MESSAGE);
jTextField_text.selectAll();
jTextField_text.requestFocus(true);
jbt_find.setEnabled(false);
}
else
{
Note.fileArea.select(str_find_index,str_find_index+str_find_len); //将查找到的字符反选
str_first_index=str_find_index+str_find_len; //改变查找的初始位置
}
}
}
else /***不区分大小写查找****说明:先将文本区中的文本和要查找的字符串转换成同一小写字符串,再进行查找操作****/
{
/*将文本区中的字母文本转换为小写字母文本—— 开始*/
char a[]=str_jtextarea.toCharArray();
for(int i=0;i<a.length;i++)
{
if(Character.isUpperCase(a[i]))
{
a[i]=Character.toLowerCase(a[i]);
}
}
str_jtextarea=new String(a);
/*将文本区中的字母文本转换为小写字母文本—— 结束*/
/*将查找字符串中的字母文本转换为小写字母文本—— 开始*/
char b[]=str_find.toCharArray();
for(int j=0;j<b.length;j++)
{
if(Character.isUpperCase(b[j]))
{
b[j]=Character.toLowerCase(b[j]);
}
}
str_find=new String(b);
/*将查找字符串中的字母文本转换为小写字母文本—— 结束*/
if(jrb_find_up.isSelected())
{
if(Note.fileArea.getCaretPosition() == 0){
jbt_find.setEnabled(false);
}
else {
str_up_find=Note.fileArea.getText().substring(0,Note.fileArea.getCaretPosition()-str_find_len);
char c[]=str_up_find.toCharArray();
for(int k=0;k<c.length;k++)
{
if(Character.isUpperCase(c[k]))
{
c[k]=Character.toLowerCase(c[k]);
}
}
str_up_find=new String(c);
int str_last_index=str_up_find.lastIndexOf(str_find);
if(str_last_index!=-1)
{
Note.fileArea.select(str_last_index,str_last_index+str_find_len);
str_up_find=str_up_find.substring(0,str_last_index);
}
else
{
JOptionPane.showMessageDialog(null,"找不到“ "+str_find+" ”(查找完毕)","记事本",JOptionPane.QUESTION_MESSAGE);
jTextField_text.selectAll();
jTextField_text.requestFocus(true);
jbt_find.setEnabled(false);
}}
}
/*向下查找*/
if(jrb_find_down.isSelected())
{
str_first_index=Note.fileArea.getCaretPosition();
int str_find_index=str_jtextarea.indexOf(str_find,str_first_index); //查找字符串出现的位置,如果没找到则返回-1
if(str_find_index==-1)
{
JOptionPane.showMessageDialog(null,"找不到“ "+str_find+" ”(查找完毕)","记事本",JOptionPane.QUESTION_MESSAGE);
jTextField_text.selectAll();
jTextField_text.requestFocus(true);
jbt_find.setEnabled(false);
}
else
{
Note.fileArea.select(str_find_index,str_find_index+str_find_len); //将查找到的字符反选
str_first_index=str_find_index+str_find_len; //改变查找的初始位置
}
}
}
}//GEN-LAST:event_jButton_Find_NextActionPerformed
private void jTextCaretUpdate(javax.swing.event.CaretEvent evt) {
jbt_find.setEnabled(true);
jbt_find.setFocusable(true);
}
private void jrb_findActionPerformed(ActionEvent evt) {
jbt_find.setEnabled(true);
jbt_find.setFocusable(true);
}
/**
* @param args the command line arguments
*/
// Variables declaration - do not modify
private ButtonGroup buttonGroup1;
private JRadioButton jrb_find_down;
private JRadioButton jrb_find_up;
private JTextField jTextField_text;
private JButton jbt_close;
private JButton jbt_find;
private JCheckBox jcb_box;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -