为什么这段java代码会给我这么多错误?

时间:2013-12-10 03:40:09

标签: java

以下是在控制台中给出了很多错误,如果用screen S初始化new screen(10),则不会显示错误(您应该事先减少数组大小),为什么会这样? / p>

import java.awt.*;
import javax.swing.*;
public class screen{
    JFrame window=new JFrame();
    JPanel scr=new JPanel();
    JPanel[][] pixels=new JPanel[240][360];
    screen(int scale){
        scr.setLayout(new GridLayout(240,360));
        int x=0;
        for(JPanel Fx[]:pixels){
        for(JPanel Fy:Fx){
            Fy=new JPanel();
            if(x%3==0){Fy.setBackground(Color.red);}
            if(x%3==1){Fy.setBackground(Color.green);}
            if(x%3==2){Fy.setBackground(Color.blue);}
            x++;
            Fy.setPreferredSize(new Dimension(scale,scale));
            scr.add(Fy);}}
        window.add(scr);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.pack();
        window.setResizable(false);
        window.setVisible(true);
    }
    public static void main (String[] args){
        screen S=new screen(1);
    }
}

编辑(因为我因为缺乏业力而无法回复):

@Makoto:

这是我遇到的错误,

http://i.stack.imgur.com/O28f0.png

@Hovercraft充满鳗鱼:

我已经将for循环更改为迭代整数,但它给了我相同的错误。

2 个答案:

答案 0 :(得分:3)

你真的需要这么多JPanel吗? 您创建JPanel 86400次(240x360)。

答案 1 :(得分:0)

  • 请注意,您无法在for-each循环中创建对象。而是使用常规for循环。原因是for-each循环隐藏了它的实际真实结构,真正的结构不允许新的对象创建和赋值,因为在你的循环中使用了一个“不可见”迭代器,内部循环变量,Fy,是一个临时变量,您不能为其分配新对象并假设它将被分配给该数组。换句话说:Fy=new JPanel(); 将新的JPanel分配给数组,而是分配给临时变量。分配给数组的唯一方法是使用标准for循环。
  • 你应该永远不会有那么多错误,并且让它们表明你的代码风格是错误的。如果您不允许使用NetBeans或Eclipse等高级IDE,那么您应该尽早并经常编译代码,并且在所有当前代码编译完成之前不应添加任何新代码。
  • 考虑使用JTable而不是您正在使用的巨大网格。