嵌套的 JLayeredPane 无法正确呈现
Nested JLayeredPane not rendering properly
我正在定义自己的 JLayeredPane 派生 class:
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 之间有什么不同吗?
通常,JLayeredPane
没有布局管理器,因此您需要负责确保组件的大小和位置。
您尝试使用您选择的布局管理器,或使用 setBounds
子组件
我正在定义自己的 JLayeredPane 派生 class:
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 之间有什么不同吗?
通常,JLayeredPane
没有布局管理器,因此您需要负责确保组件的大小和位置。
您尝试使用您选择的布局管理器,或使用 setBounds
子组件