我有这个小小的代码,但我不知道为什么它无法从aa.width
类的aa
类中读取ab
的值。
我正在尝试创建一个基本游戏。文件ab.java
具有print语句。我知道我没有调用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!
答案 0 :(得分:6)
您在调用aa.width
构造函数后设置ab()
变量。
将public static int width = 600;
一行向上移动即可完成。
答案 1 :(得分:0)
我建议你也不要使用过多的公共变量,而是每个对象应该有自己的私有变量和setter / getter方法。 我建议您也检查游戏的结构以及尝试创建游戏的方式,如果您对java GUI和/或MVC(模型视图控制器)不熟悉,也许您只想创建一个单独的类需要所有内部,或者更进一步,处理逻辑的类和处理所有图形的类。如果你在编码之前做了很好的思考,你可能会有更快的编码和调试。
我无法告诉你更多,因为我无法理解你的代码想要做什么。