例如,在下面的代码中,您可以看到我将一个字符的静态实例添加到我称为view的JFrame中。有没有时间我可以添加一个非静态的组件来查看?我只是想了解为什么组件必须是静态的。是因为我编写代码的方式?
public class View extends JFrame {
static Character mainCharacter;
public View(){
this.setBackground(Color.black);
this.setSize(800,600);
// JLayeredPane pane = new JLayeredPane();
mainCharacter = new Character();
}
public static void main(String[] args){
View view = new View();
view.add(mainCharacter);
view.setVisible(true);
view.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
答案 0 :(得分:2)
组件不必是静态的,可以添加到Frame中。在您的情况下,mainCharacter
必须是静态的,因为您在静态方法中使用它,即main
方法。
答案 1 :(得分:2)
当您从static
方法访问该变量时,该变量为main
,该方法与View
的实例无关。将变量放在方法或构造函数中。除非您需要访问使用范围之外的变量,否则应将其定义为局部变量
void initComponents() {
...
Character mainCharacter = new Character();
frame.add(mainCharacter);
...
}