如何制作像QQ那样具有“停靠”和“隐藏”功能的窗体?
给点思路~
我试过用MouseListener里面的mouseEntered和mouseExited不太好用啊
鼠标移动到窗体里面的组件上时竟然也会激发mouseExited事件。
有知道方法的给点意见,先谢谢啦
给点思路~
我试过用MouseListener里面的mouseEntered和mouseExited不太好用啊
鼠标移动到窗体里面的组件上时竟然也会激发mouseExited事件。
有知道方法的给点意见,先谢谢啦
不过我到时没有做过..
你可以在他的鼠标进入和离开处判断一下鼠标是否还在整个面板的区域内, 做相应的处理。
还有, 再加个互斥变量, 当鼠标离开整个面板后才改变其值。package com.biao;import java.awt.event.*;
import javax.swing.*;public class Test01 extends JPanel {
private static final long serialVersionUID = 8610818494539707828L;
private JButton button;
private static int counter = 0;
private boolean show = true; public Test01() {
button = new JButton("Button");
this.add(button); this.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
++counter;
System.out.print("Mouse entered: " + counter);
if (!show) {
show = true;
}
System.out.println(", show " + show);
} @Override
public void mouseExited(MouseEvent e) {
++counter;
System.out.print("Mouse exited: " + counter + " "
+ Test01.this.contains(e.getPoint()));
if (!Test01.this.contains(e.getPoint())) {
show = false;
}
System.out.println(", show " + show);
}
});
} private static void createGUIAndShow() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500); frame.getContentPane().add(new Test01()); frame.setVisible(true);
} public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Test01.createGUIAndShow();
}
});
}
}