dongbeisong 发表于 2013-08-17 17:33

【求助】自定义背景panel上的组件不显示问题!

我自定义了背景显示面板,背景图片是能够正确显示的。但是在面板上放置的toolbar却不能正常显示。需要将鼠标经过其上时,才能显示出来。问各位大神什么原因!
背景面板代码:import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.JPanel;

/**
*
* @author dongbeisong
*/
public class ImagePanel extends JPanel{
    private Image myImage;

    /**
   * Creates new form ImagePanel
   */
    public ImagePanel() {
      super();
      URL toolbarbackimage = this.getClass().getResource("/edu/upl/huiwencheck/ui/resounce/toolbarback.jpg");
      myImage = Toolkit.getDefaultToolkit().getImage(toolbarbackimage);
      this.setBounds(0, 0, 930, 70);
    }

    @Override
    public void paintComponent(Graphics g) {
      super.paintComponent(g);
      Graphics2D g2D = (Graphics2D) g;
      if (myImage != null) {// 绘制背景
            g2D.drawImage(myImage, 0, 0, this.getWidth(), this.getHeight(), this);
      }
      g2D.dispose();
    }
   
   
}程序运行时:

鼠标经过后:

dongbeisong 发表于 2013-08-17 18:55

问题解决!
代码如下,原因不明public class ImagePanel extends JPanel {

    private Image myImage;

    /**
   * Creates new form ImagePanel
   */
    public ImagePanel() {
      super();
      URL toolbarbackimage = this.getClass().getResource("/edu/upl/huiwencheck/ui/resounce/toolbarback.jpg");
      myImage = Toolkit.getDefaultToolkit().getImage(toolbarbackimage);
      this.setBounds(0, 0, 930, 70);
      setOpaque(false);//必须添加,原因不明
    }

    @Override
    public void paintComponent(Graphics g) {
      super.paintComponent(g);
      Graphics2D g2D = (Graphics2D) g;
      if (myImage != null) {// 绘制背景
            g2D.drawImage(myImage, 0, 0, this.getWidth(), this.getHeight(), this);
      }
      //g2D.dispose();//必须注释掉
      
    }
}
页: [1]
查看完整版本: 【求助】自定义背景panel上的组件不显示问题!