我是一名Java新手参加一个初级编程班,我正在努力完成我的家庭作业(明天到期!)而且我一直在撞墙试图弄清楚我做错了什么。
这是基本的作业:
创建一个获取x和y位置参数的Building类 - 我没有遇到任何问题
使用Panel类绘制随机数量的建筑物 - 这就是我遇到麻烦的地方。
我在Actionscript和Javascript中多次做过这种事情,但由于某些原因我无法在Java中使用它。
我的策略是: 创建一个随机数r(完成) 设置'for'循环从0到r运行 为新建筑物调用构造函数 将该构建添加到数组(或ArrayList) 画大厦 结束循环
我尝试过多种变体(使用数组代替ArrayList),但这是我当前的代码:
这是我的代码:
public class CityPanel extends JPanel
{
private Bldg bldg
ArrayList<Bldg> bs = new ArrayList<Bldg>();
//------------------------------------------------------------------------
//Constructor; Creates five building objects
//------------------------------------------------------------------------
public CityPanel()
{
setPreferredSize (new Dimension(430, 400));
setBackground (new Color(0x46, 0x82, 0xb4));
}
//------------------------------------------------------------------------
//Draws this panel by requesting each object draw itself.
//------------------------------------------------------------------------
public void paintComponent (Graphics page)
{
int b = (int) Math.floor(Math.random() * 10);
for( int i = 0; i < b; i++ ) {
intArr[i] = new Integer( i );
bldg = new Bldg(100*i, 300);
bs.add(bldg);
super.paintComponent(page);
bldg.draw(page);
System.out.print(bs.get(i).toString());
}
}
当我运行主程序(绘制面板等的City类)时,我得到一个空框架。
如果我只是在没有'for'循环的情况下放入构造函数,我会得到要绘制的Building,所以问题出在我的'for'循环和我正在尝试制作的方式和/或存储对象。
当我谷歌“java创建多个对象”或“随机”或者你有什么我得到了很多或结果但没有任何相关性!
对不起这篇长篇文章感到抱歉 - 我不知道如何提出这个问题!
提前谢谢。 B'/ P>答案 0 :(得分:1)
在构造函数中构建您的建筑物
int b = (int) Math.floor(Math.random() * 10);
for( int i = 0; i < b; i++ ) {
bldg = new Bldg(100*i, 300);
bs.add(bldg);
}
然后将paintComponent更改为
public void paintComponent (Graphics page)
{
super.paintComponent(page);
for (Building bldg : bs) {
bldg.draw(page);
}
}
试一试。你应该只调用super.paintComponent一次