代码之家  ›  专栏  ›  技术社区  ›  CameronCoob

最终var更改值JAVA

  •  -1
  • CameronCoob  · 技术社区  · 8 年前

    我不明白为什么我将身高和体重初始化为32,在Window()中也可以,但在内部类GamePanel中,它的值为1和2,顺便说一句,Window()中的比例为20

    public class Window extends JFrame {
        private final int SCALE;
        private final int WIDTH;
        private final int HEIGHT;
    
        public Window()
        {
            super("Snake");
            SCALE=20;
            WIDTH=32;
            HEIGHT=32;
            setSize(new Dimension(SCALE*WIDTH,SCALE*HEIGHT));
            setLocation(getWidth()/2,0);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            GamePanel gamePanel = new GamePanel();
            setContentPane(gamePanel);
            setVisible(true);
        }
    
        private class GamePanel extends JPanel {
    
            @Override
            public void paint(Graphics g) {
                g.setColor(Color.BLACK);
                g.fillRect(0,0,getWidth(),getHeight());
                drawGrid(g);
                System.out.println(SCALE);
                System.out.println(WIDTH);
                System.out.println(HEIGHT);
            }
    
            public void drawGrid(Graphics g)
            {
                //
            }
    
        }
    }
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   anL    8 年前

    宽度和高度变量不属于窗口类。他们来自爪哇。awt。形象ImageObserver接口。

    下面是我提到的界面的内容

    package java.awt.image;
    
    import java.awt.Image;
    
    public interface ImageObserver {
    
        public static final int WIDTH = 1;
        public static final int HEIGHT = 2;
        public static final int PROPERTIES = 4;
        public static final int SOMEBITS = 8;
        public static final int FRAMEBITS = 16;
        public static final int ALLBITS = 32;
        public static final int ERROR = 64;
        public static final int ABORT = 128;
    
        public boolean imageUpdate(Image image, int i, int i1, int i2, int i3, int i4);
    }
    
        2
  •  1
  •   Nicolas Fontenele    8 年前

    您何时: 私有类GamePanel扩展了JPanel

    您正在扩展JPanel,以便继承其所有公共/受保护/包变量。如果选中所有继承树:

    JPanel<-J组件<-容器<-组件(<-图像观察者

    如果检查ImageObserver源,您将发现:

    public static final int WIDTH = 1;
    public static final int HEIGHT = 2;
    

    因为继承之上的变量优先于外部类。这就是显示的值。

    因此,请考虑将它们作为参数传递,以获得正确的值。