我用java awt编写的主界面显示背景图片,但是,却显示不出来,请各位高手帮忙解决以下了:谢谢!程序如下:
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.*;
class MyJFrame extends JFrame
{
private static final long serialVersionUID = 1L;
private JPanel Content;
MyJFrame()
{
Content=(JPanel)getContentPane();
PictureJPanel myjpanel=new PictureJPanel();
Content.setOpaque(false); //设内容窗格为透明。。  
Content.setLayout(new FlowLayout()); Content.add(myjpanel,-1);
Content.add(new JButton("确认"),0);       
this.getLayeredPane().setLayout(null);   
this.getLayeredPane().add(myjpanel,new Integer(Integer.MIN_VALUE));

setBounds(100,100,800,600);

setVisible(true);       
validate();
}

}
class PictureJPanel extends JPanel
{
private static final long serialVersionUID =2L;
public PictureJPanel()
{
//把图片显示在标签里
JLabel pictureLabel = new JLabel();
pictureLabel.setIcon(new ImageIcon("25.BMP"));
pictureLabel.setBounds(0,0,800,600);



setOpaque(false);
add(pictureLabel);


public class MainFrame
{
public static void main(String args[]) 
    {
     MyJFrame myjframe=new MyJFrame();
     //new WindowMain("冠心病诊治规律及综合治疗方案研究");
   
     //MyFrame.add(canvas2,BorderLayout.CENTER);
     myjframe.setDefaultCloseOperation(myjframe.EXIT_ON_CLOSE);   
      myjframe.setVisible(true);
     myjframe.validate();    }
}

解决方案 »

  1.   

    1、不支持BMP已经是在1.5之前了,从1.5开始已经支持BMP格式   pictureLabel.setIcon(new ImageIcon(javax.imageio.ImageIO.read(getClass().getResource("25.BMP"))));2、this.getLayeredPane()的Layout设置为Null,那么就必须要设置添加在其上面组件的Bounds,不然是没有办法显示的。你的Layer很乱...
      

  2.   

    多去看看 GridBagLayout 这个“布局之王”吧
    基本上所有的位置都能用这个去设置布局
      

  3.   


    GridBagLayout也只是说在控件比较多的时候,布局需要比较整齐的时候用得多,GridBagLayout本身还是有Bug的其实每种布局都有自身的适用场景,你用GridBagLayout给我做个环形布局试试