【问题标题】:Objects in ArrayList for JFrameJFrame 的 ArrayList 中的对象
【发布时间】:2018-01-15 22:15:09
【问题描述】:

是否可以使用 ArrayList 在 JFrame 中创建对象的多个实例?我无法让它工作。

    JFrame frame = new JFrame("Circles");

    for (Circle newc : tempcircles) {
        frame.add(new Circle(newc.x, newc.y));
    }

这里的 tempcircles 是我传递给类的输入 ArrayList。可能存在更好的解决方案,如果有,请分享。

【问题讨论】:

  • 什么是Circle?如果您查看JavaDocs for JFrame#add,您会发现它需要一个基于Component 的对象
  • Circle 只是我想做的一个对象 [link]youtube.com/watch?v=ERQcYaaZ6F0[\link]。它是一个扩展 JPanel 的对象,具有五个属性,一个位置 x,y;半径;增长率和增长的布尔值。
  • Custom Painting Approaches。 `DrawOnComponent1 示例展示了如何将 ArrayList 中的“ColoredRectangles”绘制到面板上。面板的“addRectangle(...)”方法展示了如何将要绘制的对象添加到面板。你的概念将是相似的。
  • 考虑提供一个Minimal, Complete, and Verifiable example 它将消除歧义和猜测工作并产生更好的答案

标签: java swing arraylist


【解决方案1】:

当您将组件添加到JFrame 时,它会添加到该框架的内容窗格,默认情况下它具有BorderLayoutBorderLayout 最多可容纳五个子组件,但如果您在未指定位置的情况下添加组件,则它会转到中心位置,替换之前指定的任何组件。

如果您希望能够在框架中放置无限数量的组件,则需要为框架的内容窗格使用不同的布局管理器,例如 FlowLayoutBoxLayout。例如:

frame.getContentPane().setLayout(new FlowLayout());

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 2011-12-28
    • 2011-06-16
    • 1970-01-01
    • 2018-08-07
    • 2013-08-18
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    相关资源
    最近更新 更多