假设我有这个:

class external {
    JFrame myFrame;
    ...

    class internal implements ActionListener {
        public void actionPerformed(ActionEvent e) {
             ...
             myFrame.setContentPane(this.createContentPane());
        }
    }
    ...
}
createContentPane返回一个容器。现在,如果我在ActionListener之外执行此代码,则可以使用,因为我可以访问它。但是,在里面,我没有。我可以访问myFrame,它将使用该方法的内容进行更新,但是这不足以完成我想要的操作,除非我可以从中得到这个。

我还需要其他实例变量的信息才能使用createContentPane(),所以我不确定是否可以将它设置为static

最佳答案

您可以:

myFrame.setContentPane(createContentPane());

或者
myFrame.setContentPane(external.this.createContentPane());

顺便说一句,在Java类中,第一个字母通常是大写的。如果您不这样命名,您的代码仍将编译并运行,但是通过遵循编码约定,您将能够阅读其他代码,而更重要的是其他人将能够阅读您的代码。

因此,这将是一种更好的样式:
class External {
    JFrame myFrame;
    ...

        class Internal implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                ...
                myFrame.setContentPane(createContentPane());
               //Or myFrame.setContentPane(External.this.createContentPane());
            }
        }
    ...
 }

Java Code conventions

10-04 21:52