码迷,mamicode.com
首页 > 其他好文 > 详细

2019.11.14

时间:2020-01-07 23:00:31      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:鼠标移动   null   DDM   getc   滚轮   窗体   dap   tcl   tla   

动作事件
1、P255例13.22,以及P256例13.23,注意比较用 普通当前类和匿名内部类两种方式实现按钮对象的事件监听器。(必做题,20分)

代码1:
package MyAdvancedEvent;

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

import MyAdvancedEvent.SimpleEvent.jbAction;

public class SimpleEvents extends JFrame implements ActionListener{
    private JButton jb=new JButton("我是按钮,单击我");
    public SimpleEvents() {
        setLayout(null);
        setBounds(100,100,300,300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        add(jb);
        jb.setBounds(10, 10, 150, 30);
        jb.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e) {
        jb.setText("我被单击了");
    }
    public static void main(String[] args) {
        new SimpleEvents();
    }
}
代码2:
package MyAdvancedEvent;

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

import MyAdvancedEvent.SimpleEvent.jbAction;

public class SimpleEvent2 extends JFrame{
    private JButton jb=new JButton("我是按钮,单击我");
    public SimpleEvent2() {
        setLayout(null);
        setBounds(100,100,300,300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        add(jb);
        jb.setBounds(10, 10, 150, 30);
        jb.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                jb.setText("我被单击了");
            }
        });
    }
    public static void main(String[] args) {
        new SimpleEvent2();
    }
}

运行截图:
技术图片技术图片

鼠标事件
1、P460【例25.2】一个用来演示鼠标事件的典型示例MouseEvent_Example(必做题,20分)

代码:
package MyAdvancedEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;
public class MouseEvent1 {
    JFrame f;
    JLabel l;
    public MouseEvent1() {
        f=new JFrame();
        l=new JLabel();
        f.add(l);
        l.addMouseListener(new MouseListener() {
            public void mouseClicked(MouseEvent e) {
                System.out.print("单击了鼠标按键,");
                int i=e.getButton();
                if(i==MouseEvent.BUTTON1) {
                    System.out.println("单击的是鼠标左键,");
                }
                if(i==MouseEvent.BUTTON2) {
                    System.out.println("单击的是鼠标滚轮,");
                }
                if(i==MouseEvent.BUTTON3) {
                    System.out.println("单击的是鼠标右键键,");
                }
                int clickcount=e.getClickCount();
                System.out.println("单击次数为"+clickcount+"下");
            }
            public void mousePressed(MouseEvent e) {
                System.out.print("鼠标按键被按下,");
                int i=e.getButton();
                if(i==MouseEvent.BUTTON1) {
                    System.out.println("按下的是鼠标左键,");
                }
                if(i==MouseEvent.BUTTON2) {
                    System.out.println("按下的是鼠标滚轮,");
                }
                if(i==MouseEvent.BUTTON3) {
                    System.out.println("按下的是鼠标右键键,");
                }
            }
            public void mouseReleased(MouseEvent e) {
                System.out.print("鼠标按键被释放,");
                int i=e.getButton();
                if(i==MouseEvent.BUTTON1) {
                    System.out.println("释放的是鼠标左键,");
                }
                if(i==MouseEvent.BUTTON2) {
                    System.out.println("释放的是鼠标滚轮,");
                }
                if(i==MouseEvent.BUTTON3) {
                    System.out.println("释放的是鼠标右键键,");
                }
            }
            public void mouseEntered(MouseEvent e) {
                System.out.println("光标移入组件");
            }
            public void mouseExited(MouseEvent e) {
                System.out.println("光标移入组件");
            }
            
        });
        f.setBounds(100, 100, 200, 200);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new MouseEvent1();
    }
}

运行截图:
技术图片

2、鼠标选色卡MouseEventColor,运行结果如下,通过鼠标点击不同的颜色,将窗体的背景色设置成不同。试用普通类、匿名内部类、鼠标适配器三种方式分别实例化监听器对象。
(必做题,20分)
技术图片

代码1:
package MyAdvancedEvent;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;
public class MouseEventColor implements MouseListener{
    JFrame f;
    JPanel p;
    Box box;
    JButton[]Button=new JButton[7];
    Color[]color= {Color.CYAN,Color.BLUE,Color.GRAY,Color.DARK_GRAY,Color.MAGENTA,Color.YELLOW,Color.PINK};
    public MouseEventColor() {
        f=new JFrame("选");
        p=new JPanel();
        box=Box.createHorizontalBox();
        for(int i=0;i<7;i++) {
            Button[i]=new JButton("  ");
            Button[i].setBackground(color[i]);
            Button[i].setFont(new Font("",Font.PLAIN,15));
            Button[i].addMouseListener(this);
            box.add(Button[i]);
        }
        p.add(box);
        f.add(p);
        f.setBounds(100, 100, 310, 300);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new MouseEventColor();
    }
        public void mouseClicked(MouseEvent e) {
            if(e.getSource()==Button[0]) {
                p.setBackground(color[0]);
            }else if(e.getSource()==Button[1]) {
                p.setBackground(color[1]);
            }else if(e.getSource()==Button[2]) {
                p.setBackground(color[2]);
            }else if(e.getSource()==Button[3]) {
                p.setBackground(color[3]);
            }else if(e.getSource()==Button[4]) {
                p.setBackground(color[4]);
            }else if(e.getSource()==Button[5]) {
                p.setBackground(color[5]);
            }else{
                p.setBackground(color[6]);
            }
        }
        public void mousePressed(MouseEvent e) {
            
        }
        public void mouseReleased(MouseEvent e) {
            
        }
        public void mouseEntered(MouseEvent e) {
            
        }
        public void mouseExited(MouseEvent e) {
            
        }
    
}
代码2:
package MyAdvancedEvent;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;
public class MouseEventColor1 {
    JFrame f;
    JPanel p;
    Box box;
    JButton[]Button=new JButton[7];
    Color[]color= {Color.CYAN,Color.BLUE,Color.GRAY,Color.DARK_GRAY,Color.MAGENTA,Color.YELLOW,Color.PINK};
    public MouseEventColor1() {
        f=new JFrame("选");
        p=new JPanel();
        box=Box.createHorizontalBox();
        for(int i=0;i<7;i++) {
            Button[i]=new JButton("  ");
            Button[i].setBackground(color[i]);
            Button[i].setFont(new Font("",Font.PLAIN,15));
            Button[i].addMouseListener(new MouseListener() {
                public void mouseClicked(MouseEvent e) {
                    if(e.getSource()==Button[0]) {
                        p.setBackground(color[0]);
                    }else if(e.getSource()==Button[1]) {
                        p.setBackground(color[1]);
                    }else if(e.getSource()==Button[2]) {
                        p.setBackground(color[2]);
                    }else if(e.getSource()==Button[3]) {
                        p.setBackground(color[3]);
                    }else if(e.getSource()==Button[4]) {
                        p.setBackground(color[4]);
                    }else if(e.getSource()==Button[5]) {
                        p.setBackground(color[5]);
                    }else{
                        p.setBackground(color[6]);
                    }
                }
                public void mousePressed(MouseEvent e) {
                    
                }
                public void mouseReleased(MouseEvent e) {
                    
                }
                public void mouseEntered(MouseEvent e) {
                    
                }
                public void mouseExited(MouseEvent e) {
                    
                }
            });
            box.add(Button[i]);
        }
        p.add(box);
        f.add(p);
        f.setBounds(100, 100, 310, 300);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new MouseEventColor1();
    }
}
代码3:
package MyAdvancedEvent;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.*;
public class MouseEventColor3 {
    JFrame f;
    JPanel p;
    Box box;
    Color[]color= {Color.CYAN,Color.BLUE,Color.GRAY,Color.DARK_GRAY,Color.MAGENTA,Color.YELLOW,Color.PINK};
    public MouseEventColor3() {
        f=new JFrame("");
        p=new JPanel();
        box=Box.createHorizontalBox();
        for(int i=0;i<color.length;i++) {
            final JButton button=new JButton(" ");
            button.setBackground(color[i]);
            button.setFont(new Font("",Font.PLAIN,15));
            button.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                        p.setBackground(button.getBackground());
                }
            });
            box.add(button);
        }
        p.add(box);
        f.add(p);
        f.setBounds(100, 100, 310, 300);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new MouseEventColor3();
    }
}

运行截图:
技术图片

3、鼠标事件响应练习MouseEventapp.java。当鼠标进入窗口时,窗口的标题显示“欢迎”;当鼠标离开窗口时,窗口的标题显示“再见”;鼠标在窗体单击时,就在鼠标单击所在位置显示“开始”。(必做题,20分)
技术图片技术图片技术图片

代码:
package MyAdvancedEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.*;
public class MouseEventapp {
    JFrame f;
    JLabel l;
    public MouseEventapp() {
        f=new JFrame("再见!");
        l=new JLabel("开始");
        f.add(l);
        l.setVisible(false);
        f.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                l.setVisible(true);
                int x=e.getX(),y=e.getY()-30;
                l.setBounds(x, y, 100, 20);
            }
            public void mouseEntered(MouseEvent e) {
                f.setTitle("欢迎!");
            }
            public void mouseExited(MouseEvent e) {
                f.setTitle("再见!");
                l.setVisible(false);
            }
        });
        f.setBounds(200, 200, 300, 300);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new MouseEventapp();
    }
}

运行截图:
技术图片

2、鼠标移动监听练习MyMouseMotionListener.java。当鼠标在窗体内移动和拖动时,分别显示如下信息:最前面是移动或拖动次数;最后面的是发生事件时鼠标所在的x坐标和y坐标(选做题,20分)
技术图片技术图片

代码:
package MyAdvancedEvent;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.*;

public class MyMouseMotionLister {
    JFrame f;
    JLabel l;
    JButton b;
    JTextArea ta;
    JScrollPane sp;
    int count;
    public MyMouseMotionLister() {
        f=new JFrame("MyMouseMotionLister");
        l=new JLabel("click and drag the mouse");
        b=new JButton("退出");
        ta=new JTextArea();
        sp=new JScrollPane(ta);
        sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        f.add(l,BorderLayout.NORTH);
        f.add(sp,BorderLayout.CENTER);
        f.add(b,BorderLayout.SOUTH);
        f.setSize(400, 300);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ta.addMouseMotionListener(new MouseMotionListener() {
            public void mouseDragged(MouseEvent e) {
                int xx=e.getX(),yy=e.getY();
                count++;
                String counts=count+"",x=xx+"",y=yy+"";
                String content=counts+"the mouse is drag:x="+x+",y="+y;
                ta.append(content+"\n");
            }
            public void mouseMoved(MouseEvent e) {
                int xx=e.getX(),yy=e.getY();
                count++;
                String counts=count+"",x=xx+"",y=yy+"";
                String content=counts+"the mouse is moving:x="+x+",y="+y;
                ta.append(content+"\n");
            }
        });
        b.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(e.getSource()==b){
                    System.exit(0);
                }
            }
        });
    }
    public static void main(String[] args){
        new MyMouseMotionLister();
    }
}

运行截图:
技术图片技术图片

2019.11.14

标签:鼠标移动   null   DDM   getc   滚轮   窗体   dap   tcl   tla   

原文地址:https://www.cnblogs.com/quan-2723365710/p/12164024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!