📄 changedialog.java
字号:
package javadesign;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.regex.*;
/*******************************************
*
* 利用ChangeDialog来替换
*
*******************************/
public class ChangeDialog extends JDialog implements ActionListener{
private JLabel findLabel,changeLabel;
private JTextField findField,changeField;
private JCheckBox letter=new JCheckBox("区分大小写",false);
private JButton findButton,changeButton,changeAllButton,cancelButton;
private JPanel buttonPanel,textPanel;
private Container container=this.getContentPane(); //获得内容面板
Pattern pattern;
// 用Pattern类的matcher()方法生成一个Matcher对象
Matcher matcher ;
boolean start=true,letterflag=true;
int judge=Pattern.CASE_INSENSITIVE; //区分大小写的值为1,不区别为2,此时judge=2
public ChangeDialog(Frame frame,String title,boolean modal){
super(frame,title,modal); //调用父类的构造方法
this.setSize(390,180); //设置大小
setLocation(Note.xp+ 50, Note.yp+ 150);//设置显示的位置
this.setResizable(false); //设置为不可最大化
findLabel=new JLabel("输入原始字符:");
changeLabel=new JLabel("输入替换字符:");
findField=new JTextField(10);
changeField=new JTextField(10);
findButton=new JButton("查找下一个");
changeButton=new JButton("替换");
changeAllButton=new JButton("全部替换");
cancelButton=new JButton("取消");
buttonPanel=new JPanel();
textPanel=new JPanel();
buttonPanel.setLayout(new GridLayout(4,1,5,5));
textPanel.setLayout(new GridLayout(2,2,5,5));
textPanel.add(findLabel);
textPanel.add(findField);
textPanel.add(changeLabel);
textPanel.add(changeField);
buttonPanel.add(findButton);
buttonPanel.add(changeButton);
buttonPanel.add(changeAllButton);
buttonPanel.add(cancelButton);
container.setLayout(null);
textPanel.setBounds(10,10,250,50);
buttonPanel.setBounds(270,10,100,100);
letter.setBounds(10,90,100, 20);
container.add(textPanel);
container.add(buttonPanel);
container.add(letter);
findButton.setEnabled(false);
changeButton.setEnabled(false);
changeAllButton.setEnabled(false);
findField.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
if(findField.getText().length()!=0) {
findButton.setEnabled(true);
changeButton.setEnabled(true);
changeAllButton.setEnabled(true);
} else {
findButton.setEnabled(false);
changeButton.setEnabled(false);
changeAllButton.setEnabled(false);
}
}
});
this.getRootPane().setDefaultButton(findButton); // 默认回车按钮//
findButton.addActionListener(this);
cancelButton.addActionListener(this);
changeField.addActionListener(this);
changeButton.addActionListener(this);
changeAllButton.addActionListener(this);
cancelButton.addActionListener(this);
letter.addActionListener(this);
this.setVisible(true);
}
public void findAndChange(){
if(start){
try{
pattern = Pattern.compile(findField.getText(),judge);
matcher = pattern.matcher(Note.display.getText()); //用Pattern类的matcher()方法生成一个Matcher对象
start=false;
}catch(Exception ev){}
}
if (matcher.find(Note.display.getCaretPosition())) //使用find()方法查找第一个匹配的对象
Note.display.select(matcher.start(), matcher.end());
else
JOptionPane.showMessageDialog(null,"找不到 \""+findField.getText()+"\"","文本编辑器",JOptionPane.WARNING_MESSAGE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==findButton) {
findAndChange();
}else if(e.getSource()==changeAllButton){
Pattern pat = Pattern.compile(findField.getText(),judge);
Matcher mat = pat.matcher(Note.display.getText()); //用Pattern类的matcher()方法生成一个Matcher对象
Note.display.setText(mat.replaceAll(changeField.getText()));
}else if(e.getSource()==cancelButton)
this.setVisible(false);
else if(e.getSource()==changeButton){
if(Note.display.getSelectedText()!=null){
Note.display.replaceSelection(changeField.getText());
start=true;
}
findAndChange();
}else if(e.getSource()==letter) {
if(letterflag){judge=1;letterflag=false;} else {judge=2;letterflag=true;}
start=true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -