将所有组件实例添加到JFrame时,所有组件实例都需要是静态的

时间:2014-02-14 16:11:56

标签: java swing static

例如,在下面的代码中,您可以看到我将一个字符的静态实例添加到我称为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);



    }

2 个答案:

答案 0 :(得分:2)

组件不必是静态的,可以添加到Frame中。在您的情况下,mainCharacter必须是静态的,因为您在静态方法中使用它,即main方法。

答案 1 :(得分:2)

当您从static方法访问该变量时,该变量为main,该方法与View的实例无关。将变量放在方法或构造函数中。除非您需要访问使用范围之外的变量,否则应将其定义为局部变量

void initComponents() {

    ...
    Character mainCharacter = new Character();
    frame.add(mainCharacter);
    ...
}