zoukankan      html  css  js  c++  java
  • 图形界面系列教材 (二)- Swing 如何进行事件监听

    步骤1:按钮监听
    步骤2:键盘监听
    步骤3:鼠标监听
    步骤4:适配器
    步骤5:练习-切换显示
    步骤6:答案-切换显示
    步骤7:练习-上下左右移动
    步骤8:答案-上下左右移动

    示例 1 : 按钮监听

    创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用

    按钮监听

    package gui;

      

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

      

    import javax.swing.ImageIcon;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

      

    public class TestGUI {

        public static void main(String[] args) {

      

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(580200);

            f.setLayout(null);

      

            final JLabel l = new JLabel();

      

            ImageIcon i = new ImageIcon("e:/project/j2se/shana.png");

            l.setIcon(i);

            l.setBounds(5050, i.getIconWidth(), i.getIconHeight());

      

            JButton b = new JButton("隐藏图片");

            b.setBounds(15020010030);

      

            // 给按钮 增加 监听

            b.addActionListener(new ActionListener() {

      

                // 当按钮被点击时,就会触发 ActionEvent事件

                // actionPerformed 方法就会被执行

                public void actionPerformed(ActionEvent e) {

                    l.setVisible(false);

                }

            });

      

            f.add(l);

            f.add(b);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

            f.setVisible(true);

        }

    }

    示例 2 : 键盘监听

    键盘监听器: KeyListener
    keyPressed 代表 键被按下
    keyReleased 代表 键被弹起
    keyTyped 代表 一个按下弹起的组合动作
    KeyEvent.getKeyCode() 可以获取当前点下了哪个键

    键盘监听

    package gui;

      

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.awt.event.KeyEvent;

    import java.awt.event.KeyListener;

      

    import javax.swing.ImageIcon;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

      

    public class TestGUI {

        public static void main(String[] args) {

      

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(580200);

            f.setLayout(null);

      

            final JLabel l = new JLabel();

      

            ImageIcon i = new ImageIcon("e:/project/j2se/shana.png");

            l.setIcon(i);

            l.setBounds(5050, i.getIconWidth(), i.getIconHeight());

      

            // 增加键盘监听

            f.addKeyListener(new KeyListener() {

      

                // 键被弹起

                public void keyReleased(KeyEvent e) {

      

                    // 39代表按下了 “右键”

                    if (e.getKeyCode() == 39) {

                        // 图片向右移动 (y坐标不变,x坐标增加)

                        l.setLocation(l.getX() + 10, l.getY());

                    }

                }

      

                //键被按下

                public void keyPressed(KeyEvent e) {

                    // TODO Auto-generated method stub

      

                }

      

                // 一个按下弹起的组合动作

                public void keyTyped(KeyEvent e) {

      

                }

            });

      

            f.add(l);

      

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

            f.setVisible(true);

        }

    }

    示例 3 : 鼠标监听

    MouseListener 鼠标监听器
    mouseReleased 鼠标释放
    mousePressed 鼠标按下
    mouseExited 鼠标退出
    mouseEntered 鼠标进入
    mouseClicked 鼠标点击
    在本例中,使用mouseEntered,当鼠标进入图片的时候,图片就移动位置

    鼠标监听

    package gui;

      

    import java.awt.event.MouseEvent;

    import java.awt.event.MouseListener;

    import java.util.Random;

      

    import javax.swing.ImageIcon;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

      

    public class TestGUI {

        public static void main(String[] args) {

      

            final JFrame f = new JFrame("LoL");

            f.setSize(800600);

            f.setLocationRelativeTo(null);

            f.setLayout(null);

      

            final JLabel l = new JLabel();

            ImageIcon i = new ImageIcon("e:/project/j2se/shana_heiheihei.png");

            l.setIcon(i);

            l.setBounds(375275, i.getIconWidth(), i.getIconHeight());

      

            f.add(l);

      

            l.addMouseListener(new MouseListener() {

      

                // 释放鼠标

                public void mouseReleased(MouseEvent e) {

                    // TODO Auto-generated method stub

      

                }

      

                // 按下鼠标

                public void mousePressed(MouseEvent e) {

                    // TODO Auto-generated method stub

      

                }

      

                // 鼠标退出

                public void mouseExited(MouseEvent e) {

                    // TODO Auto-generated method stub

      

                }

      

                // 鼠标进入

                public void mouseEntered(MouseEvent e) {

      

                    Random r = new Random();

      

                    int x = r.nextInt(f.getWidth() - l.getWidth());

                    int y = r.nextInt(f.getHeight() - l.getHeight());

      

                    l.setLocation(x, y);

      

                }

      

                // 按下释放组合动作为点击鼠标

                public void mouseClicked(MouseEvent e) {

                    // TODO Auto-generated method stub

      

                }

            });

      

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

            f.setVisible(true);

        }

    }

    示例 4 : 适配器

    MouseAdapter 鼠标监听适配器
    一般说来在写监听器的时候,会实现MouseListener。
    但是MouseListener里面有很多方法实际上都没有用到,比如mouseReleased ,mousePressed,mouseExited等等。
    这个时候就可以使用 鼠标监听适配器,MouseAdapter  只需要重写必要的方法即可

    package gui;

      

    import java.awt.event.MouseAdapter;

    import java.awt.event.MouseEvent;

    import java.util.Random;

      

    import javax.swing.ImageIcon;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

      

    public class TestGUI {

        public static void main(String[] args) {

      

            final JFrame f = new JFrame("LoL");

            f.setSize(800600);

            f.setLocationRelativeTo(null);

            f.setLayout(null);

      

            final JLabel l = new JLabel("");

      

            ImageIcon i = new ImageIcon("e:/project/j2se/shana_heiheihei.png");

            l.setIcon(i);

            l.setBounds(375275, i.getIconWidth(), i.getIconHeight());

      

            f.add(l);

      

            // MouseAdapter 适配器,只需要重写用到的方法,没有用到的就不用写了

            l.addMouseListener(new MouseAdapter() {

      

                // 只有mouseEntered用到了

                public void mouseEntered(MouseEvent e) {

      

                    Random r = new Random();

      

                    int x = r.nextInt(f.getWidth() - l.getWidth());

                    int y = r.nextInt(f.getHeight() - l.getHeight());

      

                    l.setLocation(x, y);

      

                }

            });

      

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

            f.setVisible(true);

        }

    }


    更多内容,点击了解: https://how2j.cn/k/gui/gui-listener/412.html

  • 相关阅读:
    【cf1247E】E. Rock Is Push(dp+二分)
    【cf1245F】F. Daniel and Spring Cleaning(数位dp)
    【cf1243D】D.0-1 MST(set+均摊复杂度分析)
    [CF1201D] Treasure Hunting
    [CF1211C] Ice Cream
    [CF1213E] Two Small Strings
    [CF1219G] Harvester
    [CF1223D] Sequence Sorting
    [CF1231E] Middle-Out
    [CF1244E] Minimizing Difference
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615456.html
Copyright © 2011-2022 走看看