所以我刚开始编写我正在编写的 Java 程序,它告诉我我的全局变量需要是静态的。我不明白为什么它会告诉我这个,因为我以前开发过 Java 程序而不必将我的全局变量设为静态。有人可以帮忙吗?
import java.awt.event.*;
import javax.swing.*;
public class PlannerMain {
JFrame frame;
JButton makeMap;
public static void main(String[] args){
frame = new JFrame("Land Planner");
makeMap = new JButton("Make Map");
makeMap.addActionListener(new makeMapListener());
frame.setSize(580,550);
frame.setVisible(true);
}
class makeMapListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
}
}
}
最佳答案
您的main
方法是static
,因此它只能直接访问类的static
字段。否则,您需要先创建一个 PlannerMain
的实例,然后您才能访问它的字段。即
public static void main(String[] args){
PlannerMain planner = new PlannerMain();
planner.frame = new JFrame("Land Planner");
planner.makeMap = new JButton("Make Map");
planner.makeMap.addActionListener(new makeMapListener());
...
}
请注意,此类初始化代码最好放在构造函数 方法中。
顺便说一句,您引用的变量不是全局的。现在,您创建的PlannerMain
实例数量与frame
和makeMap
数量相同。如果您将它们声明为 public static
,它们只会是“全局的”(或者它在 Java 中最接近的等价物)——在这种情况下,所有 PlannerMain
实例将共享相同的 frame
和 makeMap
,外部世界也会看到它们。
关于Java 只允许全局变量是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4909901/