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();
    }
}

 


MouseEvent事件

MouseEvent有五个方法

getX()//获得x坐标
getY()//获得y坐标
getModiifiers()//获得鼠标的左键或者右键,左右键分别用InputEvent类中的BUTTON_MASK和BUTTON3_MASK        
getClickCount()//获得点击次数
getSource()//获得发生鼠标事件的事件源

他的监视器MouseLIstener接口有五个方法

mousePressed(MouseEvent e)//按下鼠标发生鼠标事件
mouseReleased(MouseEvent e)//释放鼠标发生鼠标事件
mouseEntered(MouseEvent e)//进入组件发生鼠标事件
mouseExited(MouseEvent e)//离开组件发生鼠标事件
mouseClicked(MouseEvent e)//单击主键发生鼠标事件

一个鼠标位置的例子

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class test{

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

class Component extends JFrame{
    JTextField text1;
    JTextArea textArea1;
    JButton button1;
    Component(){
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(){
        setLayout(new FlowLayout());
        button1=new JButton("click");
        textArea1=new JTextArea(5,20);
        text1=new JTextField(8);
        add(button1);
        add(text1);
        add(new JScrollPane(textArea1));
        MousePolice mouseListener1=new MousePolice(textArea1);
        button1.addMouseListener(mouseListener1);
        text1.addMouseListener(mouseListener1);
        addMouseListener(mouseListener1);
    }
}

class MousePolice implements MouseListener{
    JTextArea textArea1;
    MousePolice(JTextArea a){
        textArea1=a;
    }
    public void mousePressed(MouseEvent e){
        textArea1.append("按下鼠标位置:"+e.getX()+","+e.getY()+"\n");
    }
    public void mouseReleased(MouseEvent e){
        textArea1.append("放开鼠标位置:"+e.getX()+","+e.getY()+"\n");
    }
    public void mouseEntered(MouseEvent e){
        if(e.getSource() instanceof JButton)
            textArea1.append("进入按钮,位置:"+e.getX()+","+e.getY()+"\n");
        if(e.getSource() instanceof JTextField)
            textArea1.append("进入文本框,位置:"+e.getX()+","+e.getY()+"\n");
        if(e.getSource() instanceof JFrame)
            textArea1.append("进入窗口,位置:"+e.getX()+","+e.getY()+"\n");    
    }
    public void mouseExited(MouseEvent e){
        textArea1.append("退出位置: "+e.getX()+","+e.getY()+"\n");
    }
    public void mouseClicked(MouseEvent e){
        if(e.getClickCount()>=2){
            textArea1.setText("鼠标连击:"+e.getX()+","+e.getY()+"\n");
        }
    }
}

 

posted on 2016-10-23 23:12  Kooing  阅读(396)  评论(0编辑  收藏  举报

导航