代码之家  ›  专栏  ›  技术社区  ›  tybro0103

Java控制JPanels的Z阶

  •  6
  • tybro0103  · 技术社区  · 15 年前

    我在想我应该使用一个JPanel来绘制背景图像,在程序开始时将其添加到JFrame中,然后在某些事件上再添加其他JPanel。问题是Swing给首先添加的JPanels提供了最高的Z索引,所以我的背景应该显示在所有东西之上。

    4 回复  |  直到 15 年前
        1
  •  16
  •   Community Mohan Dere    13 年前

    你可以用 setComponentZOrder() 处理应用程序中的Z顺序。


        2
  •  3
  •   Avall    15 年前

    添加多个jpanel并使用z顺序听起来很奇怪。我建议您要么简单地添加一个JPanel,覆盖paintComponent(Graphics g)方法,根据事件绘制正确的图像。

    或者使用CardLayout,添加jLabel(具有不同的图像),然后当事件触发时,使用

    CardLayout cl = (CardLayout)getLayout();
    cl.show(this, "card3");
    

        3
  •  3
  •   wolfcastle    15 年前

    这个 JLayeredPane 就是为了这个目的而设计的。它允许您控制组件的Z顺序。

        4
  •  1
  •   camickr    15 年前

    绘制背景图像,添加它

    听起来很合理。

    然后将其他jpanel添加到 在某些事件上。问题 最高的Z指数,那么应该是什么呢 我的背景显示在

    将面板添加到面板就像将另一个组件添加到面板一样。子组件将绘制在父面板的顶部。没有必要玩弄Z顺序。

    也许是 Background Panel 我可以帮你。它会自动使直接添加到面板的任何组件不不透明。