求助,这个bug到底如何解决
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.image.*;
public class Test {
public class HalfTransparentImageDemo extends JFrame{
private static final long serialVersionUID = 1L;
private Container content =getContentPane();//获得窗口容器
private JSlider jSlider =new JSlider (JSlider.HORIZONTAL,0,100,75);//改变图像透明度
DisplayPanel displayPanel = new DisplayPanel();//显示图形面板
public HalfTransparentImageDemo(){
super("半透明图片");//调用父类构造器
jSlider.setPaintTicks(true);//绘制标志位
jSlider.setMajorTickSpacing(25);//设置标志尺寸
jSlider.setMinorTickSpacing(5);
jSlider.setPaintLabels(true);//绘制出数字
jSlider.setBorder(new TitledBorder(BorderFactory.createEmptyBorder(),"图像的透明度(%)"));//设置边框
jSlider.addChangeListener(new ChangeListener(){//滑动条jSlider事件处理
public void stateChanged(ChangeEvent ce){
float alpha=
((float)((JSlider) ce.getSource()).getValue())/100;
displayPanel.alpha=alpha;//改变图像的透明度
displayPanel.repaint();}
});
content.add(jSlider,BorderLayout.SOUTH);
content.add(displayPanel,BorderLayout.CENTER);
setSize(300,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void main(String[] args){
new HalfTransparentImageDemo();
}
class DisplayPanel extends JPanel{
private static final long serialVersionUID = 1L;
String[] imageName ={"back.jpg","girl.gif"};//图像文件名数组
BufferedImage bufImage1,bufImage2;
float alpha=0.75f;
public BufferedImage loadBufImage(String fileName) throws InterruptedException{
Image image=getToolkit().getImage(fileName);
MediaTracker mt=new MediaTracker(this);
mt.addImage(image, 0);
mt.waitForAll();
BufferedImage bufImage =new BufferedImage(image.getWidth(this),image.getHeight(this),BufferedImage.TYPE_INT_ARGB);
Graphics bufImageG2D=bufImage.createGraphics();
bufImageG2D.drawImage(image, 0, 0,this);
return bufImage;
}
public DisplayPanel() throws Exception{
bufImage1=loadBufImage(imageName[0]);
bufImage2=loadBufImage(imageName[1]);
}
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D) g;
g2d.drawImage(bufImage1, 0,0,this);
int compositeRule =AlphaComposite.SRC_OVER;
AlphaComposite alphaComposite=AlphaComposite.getInstance(compositeRule,alpha);
g2d.setComposite(alphaComposite);
g2d.drawImage(bufImage2, 0, 0, this);
}
}
}
}