zoukankan      html  css  js  c++  java
  • swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框

    swing中一些常见的鼠标事件(鼠标形状的改变、鼠标经过时提示内容、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)+ 一些常见的花样(关闭按钮(关闭前弹出对话框)、复选框的选中等)还有系统托盘+对话框

    1.鼠标形状的改变:鼠标接触到控件时,鼠标发生了形状改变,例如变成了手形:

    代码:控件对象 .setCursor(Cursor对象(手形的常量参数));

    (例子里的lblRegNew是一个控件对象)

    2.鼠标经过控件时出现提示内容:鼠标接触到控件时,浮现出提示内容:

    代码:控件对象 .setToolTipText("提示的信息");

    效果:

    3.鼠标接近、按下(图标的切换):对于图标控件,鼠标接近或按下的图片发生切换:

    鼠标接近控件时图片发生切换代码:

    imageButton.setRolloverIcon(new ImageIcon(nearButtonPath));     (例子里的imageButton是带图标的按钮控件,nearButtonPath 是一张图片的路径)

    鼠标按下控件图片发生切换代码:

    imageButton.setPressedIcon(new ImageIcon(buttonPath));            (例子里的imageButton是带图标的按钮控件,buttonPath 是一张图片的路径)

    4.鼠标接近、离开(字体颜色的改变):鼠标接近控件时,字体发生改变,离开控件时字体颜色改变为原来的颜色:(由于java内部里没有鼠标接近、离开变字体色方法,让我们可以直接拿来用,

    这里需要添加事件:监听鼠标的接近与离开)

    代码:

    //添加鼠标接近、离开标签字体颜色改变事件
        private void fontColorEvent() {
            lblRegister.addMouseListener(new MouseAdapter() {
    
                @Override
                public void mouseEntered(MouseEvent e) {
                    lblRegister.setForeground(Color.BLUE);    
                }
    
                @Override
                public void mouseExited(MouseEvent e) {
                    lblRegister.setForeground(Color.GRAY);    
                }
                
            });
        }

    5.鼠标拖拽:鼠标拖拽窗体的事件(java的默认拖拽是需要你鼠标点击位置在窗体标题栏的那个位置,在内容面板你拖拽是没有反应的,所以我们需要添加事件:监听鼠标拖拽)

    代码:

    package com.xuetang9.kenny;
    
    import java.awt.GridLayout;
    import java.awt.Point;
    import java.awt.event.MouseMotionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class MouseMotionListenerDemo extends JFrame{
        public MouseMotionListenerDemo(){
            //设置可见性
                    this.setVisible(true);
                    //设置大小
                    this.setSize(500, 400);
                    //设置居中
                    this.setLocationRelativeTo(null);
                    //设置关闭退出
                    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    //获取面板内容
                    JPanel contentPane = (JPanel) getContentPane();
                    //添加鼠标事件
                    MouseEvent();
                
        }
        /**
         * 鼠标事件(包括了鼠标的移动、拖拽事件)
         */
        private void MouseEvent() {
            //给窗体对象添加鼠标的移动事件(添加MouseMotionListener的接口)
            this.addMouseMotionListener(new MouseListener() { });
        }
        //内部类封装鼠标事件
        public class MouseListener implements  MouseMotionListener{
    
            Point point;
            //鼠标拖拽事件
            @Override
            public void mouseDragged(java.awt.event.MouseEvent e) {
                //第一次拖拽,如果位置为空,设置鼠标位置为当前位置
                if(point == null) {
    //                point.x = e.getPoint().x;
    //                point.y = e.getPoint().y;
                    point = e.getPoint();
                }
                //相对位置--鼠标相对于面板的移动
                Point relativePoint = new Point(e.getX() - point.x, e.getY() - point.y);
                //窗体相对屏幕移动,设置窗体的位置:窗体在屏幕的位置+移动的距离,e.getComponent().getLocationOnScreen()相对于屏幕的距离
                Point framePoint = new Point(relativePoint.x + e.getComponent().getLocationOnScreen().x, relativePoint.y + e.getComponent().getLocationOnScreen().y);
                //设置对象窗体位置
                MouseMotionListenerDemo.this.setLocation(framePoint);
            }
            //鼠标移动事件
            @Override
            public void mouseMoved(java.awt.event.MouseEvent e) {
                //实现获取相对于面板鼠标位置
                setTitle("鼠标移动:" + e.getX() + "," + e.getY());
                
            }
            
        }
        public static void main(String[] args) {
            new MouseMotionListenerDemo().setVisible(true);;
        }
        
    }

     

    6、★关闭按钮的话,需要添加销毁当前窗口的事件:(再加点花样,关闭前弄一个提示框问用户是否关闭):为按钮添加事件,提示框提醒用户是否关闭窗体:

    代码:

    //为按钮添加事件,提示框提醒用户是否关闭窗体
        private void btnEvent() {
            imageButton.addActionListener(new ActionListener() {    //imageButton是一个带图标的关闭按钮控件
                @Override
                public void actionPerformed(ActionEvent e) {
                    //以对话框形式提醒用户,这里调用了工具类JOptionPane的showConfirmDialog方法
                    int result = JOptionPane.showConfirmDialog(QQLayoutLoginDesign.this, "是否真的要残忍抛下小可爱");
                    //看返回值是否与工具类JOptionPane的属性OK_OPTION一致,是的话销毁控件对象
                    if(result == JOptionPane.OK_OPTION) {
                        QQLayoutLoginDesign.this.dispose();      //销毁本窗体对象(QQlayOUtLoginDesign是我自己定义的一个窗体对象)
                    }
                }
            });   
    }

    7、复选框的选中(还有单选框的选择:加个分组实现选中单选框引发事件):

     代码:

    package com.xuetang9.kenny;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    /**
     *组合框(下拉)
     * @author Huangyujun
     *
     */
    public class MyJCombobox extends JFrame{
        private JPanel contentPane = null;
        //组合框
        private JComboBox<String> combobox = new JComboBox<String>(new String[] {
                "北京", "上海", "广州", "深圳"
        });
        
        public MyJCombobox() {
            //设置一下标题
            setTitle("组合框框");
            //设置一下大小
            setSize(500, 400);
            //设置居中
            setLocationRelativeTo(null);
            //设置退出模式
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            //内容面板
            contentPane = (JPanel) getContentPane();
            //其他部分的初始化工作
            initComponnents();
        }
    
        private void initComponnents() {
            //设置内容面板为无布局
            contentPane.setLayout(null);
            //设置组合框边界
            combobox.setBounds(0, 0, 90, 30);
            //添加组合框
            contentPane.add(combobox);
            //添加点击事件
            combobox.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println("当前选中的是:" + combobox.getSelectedItem());
                    
                }        
            });
            //设置深圳为默认选择
            combobox.setSelectedIndex(3);
    //        combobox.addItemListener(new ItemListener() {
    //
    //            @Override
    //            public void itemStateChanged(ItemEvent e) {
    //                System.out.println("当前选中的是:" + combobox.getSelectedItem());
    //            }
    //            
    //        });
        }
        public static void main(String[] args) {
            new MyJCombobox().setVisible(true);
        }
    }

    还有单选框的选择:加个分组实现选中单选框引发事件

    8、系统托盘

    9、对话框:

    消息框showMessageDialog、输入框showInputDialog、组合框showOptionDialog、确认框showConfirmDialog。

     

    messageType有:ERROR_MESSAGEINFORMATION_MESSAGEWARNING_MESSAGEQUESTION_MESSAGEPLAIN_MESSAGE

  • 相关阅读:
    Log4Net使用指南
    构建Asp.Net2.0 GridView复合多层表头的几种方法
    javaScript中如何定义类
    是不是silverlight 2 的bug
    领悟 JavaScript 中的面向对象
    web拖动Drag&amp;Drop原理
    一个不错的js验证框架
    MySQL中文参考手册
    高效实现数据仓库的七个步骤
    什么是ARP?如何防范ARP欺骗?
  • 原文地址:https://www.cnblogs.com/shan333/p/14564028.html
Copyright © 2011-2022 走看看