当前位置: 首页 > 知识库问答 >
问题:

使用for循环将JPanels添加到JFrame

锺超英
2023-03-14

我有一个JPanel、窗口和一组JPanel和JLabel。我想在JFrame中添加5个JPanel,在每个JPanel中添加一个JLabel。每个JPanel将用于表示有关骰子的数据。

但是,当我运行代码时,只有最后一个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]);

    }
}

共有3个答案

谢弘阔
2023-03-14

您的JFrame指定了默认的BorderLayout。尝试使用不同的布局,例如:

window.setLayout(new FlowLayout());

您将看到您的其他JPanels。查看更多详细信息

邓毅
2023-03-14

因为你的掷骰子一次又一次地添加,骰子0,骰子1,骰子2,骰子3停留在骰子4下面,所以你只能看到骰子4。如果你想看到其他的骰子,那么你应该使用像flowlayout,boxlayout。。。

公孙鸿才
2023-03-14

JFrame的contentPane(当您调用JFrame#add(…)时添加内容的内容) )默认情况下使用BorderLayout,并且无论何时以默认方式向其添加组件,该组件都会添加BorderLayout。居中

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

有关这方面的更多信息,请参阅布局管理器教程。需要理解的一个关键概念是,可以嵌套JPanel,每个都使用自己的简单布局管理器,从而仅使用简单易用的布局管理器实现复杂布局。

 类似资料:
  • 我想登录两种不同的用户类型。所以我这样编码。但是addListenerForSingleValueEvent中的for循环在此不起作用,请帮助。它好像不会进入for循环。请帮助我在这个登录卡。JAVA 火基

  • 问题内容: 我在这里想到了这个循环: 它有效,但是我敢肯定有更好的方法 问题答案: 答案将取决于您使用的是哪种类型,例如,如果您使用的是a ,则可以使用类似… 假设您只想向表模型的末尾添加行;) 就个人而言,我希望将每个成员作为单个实体添加到表模型中,但这仅仅是我一个 看看如何使用表格了解更多详细信息…

  • 我试图理解数组加法CoderByte问题的解决方案中的逻辑。这是问题提示——“使用JavaScript语言,让函数ArrayAdditionI(arr)获取存储在arr中的数字数组并返回字符串true,如果数组中的任何数字组合可以加到等于数组中的最大数字,否则返回字符串false。例如:如果arr包含[4, 6, 23, 10, 1, 3],则输出应该返回true,因为4 6 10 3 = 23。

  • 如果我在问这个问题时犯了任何错误,我会提前道歉。我不熟悉stackoverflow和java。 我的问题是,我希望能够将一个普通的double数组转换为arraylist,我需要对这个arraylist元素进行操作,以便将值从x更改为-x(使用接口) 我正试图首先使用for循环元素逐个元素将数组double转换为arraylist(我认为应该先得到它),但.add似乎不起作用,这是我研究它时出现的

  • 问题内容: 我在3个单独的类中有3个窗口,我想使用cardLayout,以便当你单击next按钮时,将出现下一个窗口。如何将包含不同元素的JPanels添加到一个cardLayout?这是第一个窗口:(尽管唯一的区别是背景-但它代表了我实际得到它的想法) 第二个窗口: 最后一个: 问题答案: 我做了一个小程序,希望程序中写的注释可以指导你了解如何使用CardLayout。