📄 replacedlg.java
字号:
package notepad;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class ReplaceDlg extends JDialog implements ActionListener,
ItemListener, DocumentListener {
// GUI components
JLabel label1, label2;
JTextField findText, replaceTo;
JButton btn_findNext, btn_replace, btn_replaceAll, btn_cancel;
JCheckBox ignoreCase;
JPanel panel1, panel2;
// 变量
String source, destination;
boolean isIgnoreCase = true;
// "父窗口"
NotePad notePad;
/**
* 构造函数
*
* @param notePad
* 主类NotePad的对象
*/
public ReplaceDlg(NotePad initNotePad) {
setTitle("替换");
notePad = initNotePad;
notePad.mileStone = 0;
Container con = getContentPane();
panel1 = new JPanel();
panel2 = new JPanel();
con.setLayout(new BorderLayout());
label1 = new JLabel("查找内容(N):");
label2 = new JLabel("替换为(P):");
findText = new JTextField(25);
findText.getDocument().addDocumentListener(this);
replaceTo = new JTextField(25);
ignoreCase = new JCheckBox("区分大小写(C)");
ignoreCase.addItemListener(this);
panel1.add(label1);
panel1.add(findText);
panel1.add(label2);
panel1.add(replaceTo);
panel1.add(ignoreCase);
btn_findNext = new JButton("查找下一个(F)");
btn_replace = new JButton("替换(R)");
btn_replaceAll = new JButton("全部替换(A)");
btn_cancel = new JButton("取消");
btn_findNext.addActionListener(this);
btn_replace.addActionListener(this);
btn_replaceAll.addActionListener(this);
btn_cancel.addActionListener(this);
btn_findNext.setEnabled(false);
btn_replace.setEnabled(false);
btn_replaceAll.setEnabled(false);
panel2.add(btn_findNext);
panel2.add(btn_replace);
panel2.add(btn_replaceAll);
panel2.add(btn_cancel);
con.add(panel1, BorderLayout.CENTER);
con.add(panel2, BorderLayout.SOUTH);
setSize(400, 150);
setVisible(false);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == btn_findNext) {
source = findText.getText();
// 调用搜索函数来搜索整个工作区中的文字
if (!notePad.OnFindMenuItem(source, isIgnoreCase)) {
JOptionPane
.showMessageDialog(null, "找不到关键字 \"" + source + "\"");
}
} else if (e.getSource() == btn_replace) {
if (notePad.note.getSelectedText() == null) {
source = findText.getText();
// 调用搜索函数来搜索整个工作区中的文字
if (!notePad.OnFindMenuItem(source, isIgnoreCase)) {
JOptionPane.showMessageDialog(null, "找不到关键字 \"" + source
+ "\"");
return;
}
}
destination = replaceTo.getText();
notePad.note.replaceSelection(destination);
source = findText.getText();
// 调用搜索函数来搜索整个工作区中的文字
if (!notePad.OnFindMenuItem(source, isIgnoreCase)) {
JOptionPane
.showMessageDialog(null, "找不到关键字 \"" + source + "\"");
}
} else if (e.getSource() == btn_replaceAll) {
source = findText.getText();
destination = replaceTo.getText();
notePad.replaceAll(source, destination, isIgnoreCase);
} else if (e.getSource() == btn_cancel) {
this.setVisible(false);
this.dispose();
}
}
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == ignoreCase) {
isIgnoreCase = ignoreCase.isSelected() ? false : true;
}
}
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
int length = findText.getText().length();
if (length > 0) {
btn_findNext.setEnabled(true);
btn_replace.setEnabled(true);
btn_replaceAll.setEnabled(true);
} else {
btn_findNext.setEnabled(false);
btn_replace.setEnabled(false);
btn_replaceAll.setEnabled(false);
}
}
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
int length = findText.getText().length();
if (length > 0) {
btn_findNext.setEnabled(true);
btn_replace.setEnabled(true);
btn_replaceAll.setEnabled(true);
} else {
btn_findNext.setEnabled(false);
btn_replace.setEnabled(false);
btn_replaceAll.setEnabled(false);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -