package myClass;
/*
* 淡入淡出窗口,淡出时,如果鼠标移进去了,则中止渐变。
* gradual change Frame
*/
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class GCFrame{
protected static Timer Tims0;
static JFrame frame;
static float value1=1.0f;
boolean isClicked=false;
public GCFrame(){
frame=new JFrame();
JPanel jp=new JPanel();
JButton jbt=new JButton("淡出");
jp.add(jbt);
frame.add(jp);
frame.setSize(320,240);
frame.setVisible(true);
//添加按钮的监听事件
Tims0=new Timer(100,new Tim1());
jbt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Tims0.start();
isClicked=true;
//当鼠标移入窗口时,中止线程,当点击了“淡出”按钮后添加事件监听代码
if(isClicked==true){
frame.addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e){
Tims0.stop();
value1=1.0f;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
com.sun.awt.AWTUtilities.setWindowOpacity(frame,value1);
}
});
}
public void mouseExited(MouseEvent e){
Tims0.start();
}
});
}
}
});
}
static class Tim0 implements ActionListener{//控制窗口打开时透明度的渐变
public void actionPerformed(ActionEvent e){
}
}
static class Tim1 implements ActionListener{//控制窗口关闭时透明度的渐变
public void actionPerformed(ActionEvent e){
value1-=0.02f;
if(value1>=0.02f){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
com.sun.awt.AWTUtilities.setWindowOpacity(frame,value1);
}
});
}else{
System.exit(0);
}
}
}
public static void main(String[] args){
new GCFrame();
}
}