我无法同时显示两个不同的组件。
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);
}
}
现在我在这个论坛上看到你可以做一些事情同时展示,但却无法弄清楚它是如何完成的。有人可以帮忙吗?我希望有一个在另一个面前。他们是否有某种方法来控制分层?提前致谢。
答案 0 :(得分:1)
在JFrame
内,布局管理器通常用于定位不同的组件,教程here。
类似的东西:
Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());
为JFrame
设置基本布局管理器。还有JLayeredPane
允许您指定z顺序 - docs page,所以类似于:
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);
以这种方式设置显示层次结构,对象包含对象。我不确定BandComponent
和ConcertBackground
类是什么,但是如果它们继承自Swing类,则可能需要设置首选大小或类似值以确保它们没有零大小!
答案 1 :(得分:1)
您遇到的问题是因为JFrame
默认使用BorderLayout
。 BorderLayout
仅允许单个组件出现在其五个可用位置中的任何一个位置。
要将多个组件添加到单个容器,您需要配置布局或使用更符合您需求的布局......