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