嵌套的JLayeredPane无法正确呈现

内森·史鲁姆(Nathan Shrum)

我正在定义自己的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与底层JLabel之间有什么不同吗?

疯狂程序员

通常,JLayeredPane没有布局管理器,因此您有责任确保组件的大小和位置。

您尝试使用自己选择的布局管理器或使用setBounds子组件

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章