Java中swing,实现鼠标悬停一个Jlabel块时,另一个Jlabel块显示,移出去后隐藏

本文介绍如何在Java Swing中实现当鼠标悬停在一个JLabel上时,另一个JLabel显示,鼠标移开后则隐藏的交互效果。通过设置MouseListener监听器和控制JLabel的opaque属性,可以轻松实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中swing,实现鼠标悬停一个Jlabel块时,另一个Jlabel块显示,移出去后隐藏-------------------------------------

效果图为:鼠标移入白横时,黑色块显示,移除后隐藏


package view;

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


/**
 * @author Brainrain
 */
public class aaa extends JFrame implements MouseListener {
    private JLabel label1;
    private JLabel label2;
    private JLabel label3;

    public aaa() {
        label1 = new JLabel();
        label2 = new JLabel();
        label3 = new JLabel();
        this.setBounds(100, 100, 500, 400);
        //======== this ========
        this.setLayout(null);

        //---- label1 ---- //白色横线
        label1.setIcon(new ImageIcon(getClass().getResource("/images/q/zuixiaohua.png")));
        this.add(label1);
        label1.setBounds(245, 60, 20, 25);

        //---- label2 ---- 黑块
        label2.setBackground(Color.black);
        //label2.setOpaque(true);
        this.add(label2);
        label2.setBounds(190, 50, 115, 52);

        //蓝块
        label3.setBackground(Color.blue);
        //label3.setIcon(new ImageIcon(getClass().getResource("/images/airplane1.jpg")));
        label3.setOpaque(true);
        this.add(label3);
        label3.setBounds(160, 50, 150, 60);

        label1.addMouseListener(this);
        this.addMouseListener(this);

        //this.paintAll(this.getGraphics());

        //重开一个线程,进行不断的重绘,来实现窗口的动态更新
        new Thread(() -> {
            while (true) {
                aaa.this.repaint();

            }
        }).start();
    }
    public static void main(String[] args) {
        new aaa().setVisible(true);
    }
    @Override
    public void mouseClicked(MouseEvent e) {
    }
    @Override
    public void mousePressed(MouseEvent e) {
    }
    @Override
    public void mouseReleased(MouseEvent e) {
    }
    @Override
    public void mouseEntered(MouseEvent e) {  //悬停时
        if (e.getSource() == label1) {
            System.out.println("qwqq");
            label2.setOpaque(true);  //setOpaque()使用此方法来达到隐藏的效果  true 为不隐藏,false为隐藏
        }
    }

    @Override
    public void mouseExited(MouseEvent e) { //悬停后
        if (e.getSource() == label1) {
            System.out.println("asfsa");
            label2.setOpaque(false);

        }
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值