package Test;
import java.awt.AlphaComposite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PictureFadeFrame extends JFrame {
private Image img1=null;
private Image img2=null;
private PictureFadePanel pictureFadePane=new PictureFadePanel();
public static void main(String args[]){
PictureFadeFrame frame=new PictureFadeFrame();
frame.setVisible(true);
}
public PictureFadeFrame(){
URL url=PictureFadePanel.class.getResource("/image/img.jpg");
img1=Toolkit.getDefaultToolkit().getImage(url);
url=PictureFadePanel.class.getResource("/image/imag.jpg");
img2=Toolkit.getDefaultToolkit().getImage(url);
getContentPane().add(pictureFadePane);
setBounds(200,160,316,237);
Thread thread=new Thread(pictureFadePane);
thread.start();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("图片淡入淡出");
}
class PictureFadePanel extends JPanel implements Runnable{
boolean flag=false;
float x=0.0f;
AlphaComposite alpha=AlphaComposite.SrcOver.derive(x);
public void paint(Graphics g){
Graphics2D g2=(Graphics2D)g;
g2.clearRect(0, 0, 316, 237);
g2.drawImage(img1, 0, 0, getWidth(), getHeight(), this);
g2.setComposite(alpha);
g2.drawImage(img2, 50, 40,getWidth()-100,getHeight()-80,this);
}
public void run(){
while(true){
if(flag){
x-=0.1f;
if(x<=0.0f){
x=0.0f;
}
flag=false;
}else{
x+=0.1f;
if(x>=1.0f){
x=1.0f;
}
flag=true;
}
alpha=AlphaComposite.SrcOver.derive(x);
repaint();
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}