我想要一个背景图片和两个面板。据悉JLayeredpane是非常合适的。所以我在我的课程中扩展了一个JLayeredPane,并尝试从paint()中绘制图像。我搞定了。但当我在其上添加其他图层时,它们是不可见的。
我再次考虑从LayeredPane中删除bgimage,添加到它上面的第一层(在JPanel中)。现在图像不可见。为什么会这样?我想做一些像我提供的截图。请帮忙。
我的代码:
来自我的JFrame:
Container cp = this.getContentPane();
JLayeredPane backDropPanel = new JLayeredPane();
cp.add(backDropPanel,BorderLayout.CENTER);
backDropPanel.add(new bgPanel(), new Integer(1),0);
backDropPanel.add(new itemScrollerPanel(), new Integer(1),0);
小组:
class bgPanel extends JPanel{
String imageLocation = "/home/phantom/Desktop/BackDrop3.jpg";
private Image bgImage;
bgPanel(){
bgImage = new ImageIcon(imageLocation).getImage();
setPreferredSize(new Dimension(800,500));
setLayout(null);
setOpaque(true);
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(bgImage,0,0,this);
}}
class itemScrollerPanel extends JPanel{
itemScrollerPanel(){
setBounds(0,100,200,200);
setBackground(Color.RED);
setOpaque(true);
}}
在这段代码中,我看到了itemsScrollerPanels绘制的RED BG。但不是bgPanel类的形象。
我的要求是这样的:
答案 0 :(得分:0)
尝试将 setOpaque()更改为false,以便JPanel的所有像素都不会被绘制。因此使其透明。如果您仍然无法做到,请检查Jpanel是否实际上是不透明的或不使用 isOpaque()
答案 1 :(得分:0)
如果没有明确设置bgPanel大小,我会得到
System.err.println(bgPanel.getSize());
//java.awt.Dimension[width=0,height=0]
如果您从
更改代码 setPreferredSize(new Dimension(800, 500));
到
setPreferredSize(new Dimension(800, 500));
setSize(800,500);
你应该看到画面。