📄 05151858102.java
字号:
}
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 + -