当前位置: 代码迷 >> Java相关 >> 关于JPanel 的setOpaque问题
  详细解决方案

关于JPanel 的setOpaque问题

热度:264   发布时间:2007-03-24 16:10:33.0
关于JPanel 的setOpaque问题

本人想用几个JPanel的来重复合成一个图画,就是说,可以几层的JPanel来重叠在一起,然后想通过setOpaque的方法来设置每一个JPanel透明,想显示各个JPanel的图像,但是不行,请问怎样可以做到呢?

搜索更多相关的解决方案: JPanel  setOpaque  图画  图像  复合  

----------------解决方案--------------------------------------------------------

自己覆写JPanel的paintComponent方法,用Graphics的drawImage方法自己draw上去.


----------------解决方案--------------------------------------------------------
用Graphics的drawImage 不会把原来下层的JPanel图像给遮住吗?
我是一个新手,可以给出示例代码吗?
----------------解决方案--------------------------------------------------------

示例程序:

程序代码:

import java.io.*;
import java.awt.*;
import javax.swing.*;
import javax.imageio.*;

/**
*author: [url=http://eastsun.javaeye.com]Eastsun[/url]
*/
public class CompositeImage extends JFrame{
Image backImage,foreImage;
public CompositeImage(){
super(\"CompositeImage\");
try{
backImage =ImageIO.read(new File(\"back.jpg\"));
foreImage =ImageIO.read(new File(\"fore.jpg\"));
}catch(IOException e){
e.printStackTrace();
System.exit(1);
}
JPanel panel =new JPanel(){
public void paintComponent(Graphics g){
Graphics2D g2 =(Graphics2D)g;
g2.drawImage(backImage,0,0,null);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.3f));
g2.drawImage(foreImage,80,120,null);
}
};
Dimension dim =new Dimension(backImage.getWidth(null),backImage.getHeight(null));
panel.setPreferredSize(dim);
add(panel);
pack();
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new CompositeImage().setVisible(true);
}
});
}
}


[upload=程序的源代码与图片文件]viewFile.asp?ID=18227[/upload]

----------------解决方案--------------------------------------------------------

我把那代码放到Jcreater环境里去运行了下,编译通过,运行就出现了异常,说:Can not read input file!
是什么原因?


----------------解决方案--------------------------------------------------------
你下载我代码后的附件.
其中包含两个图片文件,没有图片文件当然异常了.
----------------解决方案--------------------------------------------------------