1
我定義我自己的JLayeredPane派生類:嵌套的JLayeredPane不能正常呈現
public class Decoration extends JLayeredPane {
private int x, y;
private boolean hiDef;
private boolean[] region;
public Decoration(boolean h, int x1, int y1){
super();
setPreferredSize(new Dimension(128, 128));
x = x1;
y = y1;
hiDef = h;
region = selectRegions();
JLabel labelN = new JLabel();
labelN.setIcon(new javax.swing.ImageIcon("./resources/lgTree2.png"));
this.add(labelN, new Integer(1));
this.setOpaque(false)
}
}
然後我嘗試把這個另一JLayeredPane的內部:
JPanel panelMain = new JPanel();
panelMain.setLayout(new BorderLayout());
getContentPane().add(panelMain);
JLayeredPane gameGrid = new JLayeredPane();
gameGrid.setLayout(new GridBagLayout());
panelMain.add(gameGrid);
Decoration decor = new Decoration(hiDef, j, k);
gameGrid.add(decor, c, 9);
遺憾的是沒有被繪製在屏幕上。當我直接添加JLabel而不是JLayeredPane時,它工作正常。這是因爲將JLayeredPane嵌套在另一個JLayeredPane中,並將JLabel放置在頂層JLayeredPane與較低層JLayeredPane之間有什麼不同?
通常的
setBounds
,JLayeredPane的沒有一個佈局管理器,讓你成爲負責確保組件的大小和位置。你嘗試使用你選擇的佈局管理器,所有使用setBounds的子組件 – MadProgrammer@MadProgrammer修復它,你可以發佈它作爲答案? –