⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changedialog.java

📁 java语言编辑的一个文本编辑器,模块清晰明了,用到JAVA的反射机制,可以给选中的单词加不同的颜色进行高亮显示.调整字符大小.
💻 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 + -