0

我有这个小代码,但我不知道为什么它无法读取类中aa.widthfromaa类的值ab

我正在尝试创建一个基本游戏。该文件ab.java具有打印语句。我知道我没有调用 in 中的函数aa,但这就是 java 的工作方式。我以为我可以做aa.width,我会得到这个值,因为它是一个公共变量......谢谢你的帮助

aa.java:

package com.Game;

import javax.swing.JFrame;

public class aa {

    public static ab f= new ab();
    public static int width = 600;
    public static int height = 400;
    public static void main(String args[]){

        f.setSize(width,height);
        f.setResizable(false);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setTitle("game first");
        f.setLocationRelativeTo(null);
        System.out.println("main window running!");

    }
}

ab.java

package com.Game;

import java.awt.GridLayout;

import javax.swing.*;

public class ab extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    public ac panel;

    public ab() {
        panel = new ac(this);
        setLayout(new GridLayout (1,1,0,0));
        add(panel);
        System.out.format("the value of width %d\n", aa.width);
    }

}

它打印出来:

the value of width 0
main window running!
4

2 回答 2

6

aa.width在调用ab()构造函数后设置变量。向上移动public static int width = 600;一行,你就完成了。

于 2013-08-24T05:21:57.537 回答
0

我想建议你也不要使用太多的公共变量,而是每个对象都应该有它的私有变量和一个 setter/getter 方法。我建议你也检查一下你的游戏的结构和你尝试创建它的方式,如果你对 java GUI 和/或 MVC(模型视图控制器)很陌生,也许你只想用你的东西创建一个类需要全部在里面,或者更进一步,需要一个处理逻辑的类和一个处理所有图形的类。如果你在编码之前做一个很好的思考,你可能会有更快的编码和调试。

我不能告诉你更多,因为我无法理解你的代码想要做什么。

于 2013-08-24T08:02:27.020 回答