gpt4 book ai didi

java - 使用 for 循环将 JPanel 添加到 JFrame

转载 作者:行者123 更新时间:2023-11-29 06:36:41 24 4
gpt4 key购买 nike

我有一个 JPanel、窗口以及一组 JPanel 和 JLabel。我想向 JFrame 添加 5 个 JPanel,向每个 JPanel 添加一个 JLabel。每个 JPanel 将用于表示有关 Dice 的数据。

但是,当我运行代码时,只有最后一个 JPanel 出现在 JFrame 上,文本为“Dice 4”。我不明白为什么。

代码:

public static void main(String args[]) {

JFrame window = new JFrame("DICE Frame");
window.setVisible(true);
window.setTitle("DIE");
window.setSize(400, 200);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel[] diceView=new JPanel[5];
JLabel[] labels=new JLabel[5];
for(int i=0; i<diceView.length; i++) {

diceView[i]=new JPanel();

window.add(diceView[i]);

labels[i]=new JLabel();
labels[i].setText("Dice "+i);
diceView[i].add(labels[i]);

}
}

最佳答案

JFrame 的 contentPane(调用 JFrame#add(...) 时添加的内容)默认使用 BorderLayout,无论何时以默认方式向其添加组件,组件被添加 BorderLayout.CENTER。

解决方案是将您的其他 JPanel 添加到使用您认为必要的任何布局的 JPanel(或使用布局的嵌套 JPanel),然后将此容器 JPanel 添加到您的 JFrame BorderLayout.CENTER。

请看Layout Manager Tutorial有关更多信息。需要理解的一个关键概念是,您可以嵌套 JPanel,每个 JPanel 使用自己的简单布局管理器,从而仅使用简单易用的布局管理器即可实现复杂的布局。

关于java - 使用 for 循环将 JPanel 添加到 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19438525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com