2011-01-31 197 views
1

分層JPanels我想有一個背景圖像和兩個面板頂上他們。瞭解到JLayeredpane是非常合適的。所以,我在我的課擴展一個JLayeredPane的,並試圖從油漆繪製圖像()。我得到了它的工作。但是當我在其上添加其他圖層時,它們不可見。與背景圖像

再次我想從的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的紅BG繪製。但不是bgPanel類的圖像。

我的要求是這樣的:

enter image description here

+0

1爲說明性的畫面。 – Pace 2011-01-31 15:49:22

回答

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); 

您應該看到畫的面板。

+0

如果1是第二個面板可見的問題?我還沒有設置它。試過2,並沒有工作:( – sarath 2011-02-01 01:45:05

0

嘗試改變setOpaque()爲false,這樣的JPanel的所有像素都沒有畫。因此使它transparent.If你還在不能做了,檢查的JPanel是否實際上是不透明或不使用isOpaque()

+0

設置不透明的虛假所做的RED BG無形。並且在我將其設置爲false之前,兩個面板均不透明返回true。 – sarath 2011-01-31 16:05:34