堆叠JPanels和JLabel

时间:2018-09-20 21:38:00

标签: java swing jpanel jlabel

到目前为止,我要感谢您的帮助,现在我遇到了另一个问题。我可以使背景面板很好,也可以放置带有标签的面板。我想将一个带有标签的面板堆叠在另一个带有标签的面板上。或堆叠标签一个在另一个之上。因此,将是Background(背景),然后是JPanel(带标签)位于背景的顶部,另一个JPanel(带标签)位于第一具有标签的JPanel(顶部)。

我现在可以工作的代码的开始如下:

    // SWITCH 1
    switch1 = new JPanel();
    switch1.setLocation(24,348);
    switch1.setSize(55,83);
    switch1.setOpaque(false);
    background.add(switch1);

    sw1 = new JLabel();
    sw1.setIcon(SW1);
    sw1.setLocation(0,0);
    switch1.add(sw1);
    pack();

我想添加一个较小的JPanel和JLabel。那可能吗?我尝试了几种方法,但我尝试过的一种方法无效:

    // SWITCH 2
    switch2 = new JPanel();
    switch2.setLocation(24,348); 
    switch2.setSize(45,73); 
    switch2.setOpaque(false);
    switch1.add(switch2);

    sw2 = new JLabel();
    sw2.setIcon(SW2);
    sw2.setLocation(0,0);
    switch2.add(sw2);
    pack();

那是行不通的。预先感谢您帮助我解决此问题。

1 个答案:

答案 0 :(得分:1)

  

或者将一个标签堆叠在另一个标签上

听起来像您想要OverlayLayout

您将面板的布局管理器设置为使用OverlayLayout。然后,将标签添加到面板。

按照与将标签添加到面板中相反的顺序绘制标签。

签出:Preventing Overlay Layout from shifting background image label演示如何使用OverlayLayout的示例。