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

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

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

 

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

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

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

 

 

 

 

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

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

36.png效果:37.png

 

 

 

 

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的默认拖拽是需要你鼠标点击位置在窗体标题栏的那个位置,在内容面板你拖拽是没有反应的,所以我们需要添加事件:监听鼠标拖拽)

40.png

 

 

代码:

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、复选框的选中(还有单选框的选择:加个分组实现选中单选框引发事件):

38.png

 

 

39.png

 

 

代码:

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

 

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

41.png

 

 

8、系统托盘

42.png

 

 

 

 

9、对话框:

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

43.png

 


 

 

44.png

 

45.png

 

 

messageType有:ERROR_MESSAGEINFORMATION_MESSAGEWARNING_MESSAGEQUESTION_MESSAGEPLAIN_MESSAGE

46.png

 

目录
相关文章
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
|
3月前
|
JavaScript
使用Vue实现一个当鼠标悬浮时出现,鼠标离开时消失的双层菜单
这篇文章介绍了如何在Vue中实现一个鼠标悬浮时出现、鼠标离开时消失的双层菜单,并提供了详细的代码示例和运行效果展示。
434 0
使用Vue实现一个当鼠标悬浮时出现,鼠标离开时消失的双层菜单
|
小程序 JavaScript
小程序鼠标点击按钮(改变背景颜色字体)
小程序鼠标点击按钮(改变背景颜色字体)
100 0
鼠标悬浮显示文字的简单方法
鼠标悬浮显示文字的简单方法
169 0
AvaloniaUI 取消标题栏,无边框无最大最小化,
AvaloniaUI 取消标题栏,无边框无最大最小化,
516 0
AvaloniaUI 取消标题栏,无边框无最大最小化,
|
编解码
【PyAutoGUI操作指南】02 鼠标控制功能+获取当前坐标+鼠标事件+鼠标滚动查询
左上角的像素位于坐标0,0。如果屏幕分辨率为1920 x 1080,则右下角的像素将为1919,1079(因为坐标从0开始,而不是1)。
527 0
QT 事件过滤器实现鼠标悬浮时两个按钮背景互换
QT 事件过滤器实现鼠标悬浮时两个按钮背景互换
QT 事件过滤器实现鼠标悬浮时两个按钮背景互换
C#创建无边框可拖动窗口
C#创建无边框可拖动窗口
199 0
|
前端开发 JavaScript 计算机视觉
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
1107 0
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
VC下利用Picture控件实现png图片按钮(鼠标初始、按下、松开、获得焦点四种状态)
VC下利用Picture控件实现png图片按钮(鼠标初始、按下、松开、获得焦点四种状态)
131 0