首页 > 代码库 > java事件处理2

java事件处理2

Document事件

这个事件有点特别,需要用getDocument()返回到自己所维护的文档,然后就可以添加监视器

(textArea1.getDocument).addDocumentListener(DocumentListener listen)

DocumentListener接口有三个方法

public void changedUpdate(DocumentEvent e)
public void removeUpdate(DocumentEvent e)
public void insertUpdate(DocumentEvent e)

单词排序代码、

public class test{

    public static void main(String args[]){
        Component window1=new Component();
        window1.setBounds(40,40,300,200);
    }
}

class Component extends JFrame{
    JTextArea textArea1,textArea2;
    JMenu menu;
    JMenuBar menuBar;
    JMenuItem copyItem,cutItem,pasteItem;
    Component(){
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(){
        textArea1=new JTextArea(6,10);
        textArea2=new JTextArea(6,10);
//        textArea1.setLineWrap(true);//文本自动换行 w 
//        textArea1.setWrapStyleWord(true);//以单词为界自动换行
//        textArea2.setLineWrap(true);//文本自动换行
//        textArea2.setWrapStyleWord(true);//以单词为界自动换行
        setLayout(new FlowLayout());
        copyItem=new JMenuItem("复制(c)");
        cutItem=new JMenuItem("剪贴(t)");
        pasteItem=new JMenuItem("粘贴(v)");
        menuBar=new JMenuBar();
        menu=new JMenu("编辑");
        menuBar.add(menu);
        setJMenuBar(menuBar);//这样写才会变一条菜单
        menu.add(copyItem);
        menu.add(cutItem);
        menu.add(pasteItem);
        copyItem.setAccelerator(KeyStroke.getKeyStroke(‘c‘));//设置快捷键
        cutItem.setAccelerator(KeyStroke.getKeyStroke(‘t‘));
        pasteItem.setAccelerator(KeyStroke.getKeyStroke(‘v‘));
        copyItem.setActionCommand("copy");
        copyItem.setActionCommand("cut");
        copyItem.setActionCommand("paste");
        add(new JScrollPane(textArea1));
        add(new JScrollPane(textArea2));
        DListener dListener1=new DListener(textArea1,textArea2);
        (textArea1.getDocument()).addDocumentListener(dListener1);
        AListener aListener1=new AListener(textArea1,textArea2);
        copyItem.addActionListener(aListener1);
        cutItem.addActionListener(aListener1);
        pasteItem.addActionListener(aListener1);
    }
}

class DListener implements DocumentListener{
    JTextArea textArea1,textArea2;
    DListener(JTextArea a,JTextArea b){
        textArea1=a;
        textArea2=b;
    }
    public void changedUpdate(DocumentEvent e){
        String regex="[\\s\\d\\p{Punct}]+";
        String[] word=(textArea1.getText()).split(regex);
        Arrays.sort(word);
        textArea2.setText(null);
        for(String a:word){
            textArea2.append(a+",");
        }
    }
    public void removeUpdate(DocumentEvent e){//这个多了两个抽象方法,现在把他们设置为和上面一样
        changedUpdate(e);
    }
    public void insertUpdate(DocumentEvent e){
        changedUpdate(e);
    }
}

class AListener implements ActionListener{//快捷键功能并没有debug到
    JTextArea textArea1,textArea2;
    AListener(JTextArea a,JTextArea b){
        textArea1=a;
        textArea2=b;
    }
    public void actionPerformed(ActionEvent e){
        String a=e.getActionCommand();
        if(a.equals("copy"))
            textArea2.copy();
        else if(a.equals("cut"))
            textArea2.cut();
        else if(a.equals("paste"))
            textArea1.paste();
    }
}

 

java事件处理2