0

我无法同时显示两个不同的组件。

public class BandViewer
{
   public static void main(String[] args)
   {
      JFrame frame = new JFrame();
      frame.setSize(1000, 800);
      frame.setTitle("band");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      BandComponent component = new BandComponent();
      ConcertBackground component1 = new ConcertBackground();
      frame.add(component);
      frame.add(component1);

      frame.setVisible(true);
   }
}

现在我在这个论坛上读到,您可以做一些事情来同时显示两者,但无法弄清楚它是如何完成的。有人可以帮忙吗?我想让一个在另一个前面。他们有什么方法可以控制分层吗?提前致谢。

4

2 回答 2

1

JFrame一个布局管理器中通常用于定位不同的组件,教程在这里

就像是:

Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());

为您的JFrame. 还有一个JLayeredPane允许您指定 z-order- docs 页面,例如:

JLayeredPane layeredPane = new JLayeredPane();

BandComponent component = new BandComponent();
ConcertBackground component1 = new ConcertBackground();
layeredPane.add(component, 0); // 0 to display underneath component1
layeredPane.add(component1, 1);

contentPane.add(layeredPane);

以这种方式设置显示层次结构,其中对象包含对象。我不确定BandComponentConcertBackground类是什么,但如果它们从 Swing 类继承,您可能必须设置首选大小或类似大小,以确保它们的大小不为零!

于 2013-11-01T18:36:29.077 回答
1

您遇到的问题是因为JFrame默认情况下使用BorderLayout. BorderLayout只允许单个组件出现在它的五个可用位置中的任何一个。

要将多个组件添加到单个容器中,您需要配置布局或使用更符合您需求的布局...

查看A Visual Guide to Layout Managers了解更多示例

于 2013-11-01T20:50:11.977 回答