没有任何类型 FrameApp 的外层实例可访问。必须用类型 FrameApp 的外层实例(例如,x.new A(),其中 x 是 FrameApp 的实例)来限定分配
刚开始学java遇到很多稀奇古怪的问题,主要是没理解好面向对象思想;
现在介绍一种我遇到的问题,这个问题是类之前再来一个内部类,从而使new对象的时候出问题了。
刚开始的代码:
```java
public class FrameApp {
public static void main(String args[]) {
JButtonApp jba = new JButtonApp();//结果这里给我来了个错误,错误类 型使标题所示
}
public class JButtonApp{
JFrame jf = new JFrame();//容器对象
JButton button1 = new JButton("按钮1");
JButton button2 = new JButton("按钮2");
JButton button3 = new JButton("按钮3");
public JButtonApp() {
jf.setLayout(new FlowLayout());
jf.getContentPane().add(button1);
jf.getContentPane().add(button2);
jf.getContentPane().add(button3);
jf.getContentPane().setBackground(Color.red);
button1.setFont(new Font("隶书",Font.PLAIN,20));
jf.setVisible(true);
jf.pack();
}
}
}
### 接着是这么改的:
public class FrameApp {
public static void main(String args[]) {
FrameApp jba=new FrameApp();//首先得创建一个FrameApp对象,才能用这个对象去new一个JButtonApp 对象!!!!原因现在还不清楚
JButtonApp a =jba.new JButtonApp();
}
public class JButtonApp{
JFrame jf = new JFrame();//容器对象
JButton button1 = new JButton("按钮1");
JButton button2 = new JButton("按钮2");
JButton button3 = new JButton("按钮3");
public JButtonApp() {
jf.setLayout(new FlowLayout());
jf.getContentPane().add(button1);
jf.getContentPane().add(button2);
jf.getContentPane().add(button3);
jf.getContentPane().setBackground(Color.red);
button1.setFont(new Font("隶书",Font.PLAIN,20));
jf.setVisible(true);
jf.pack();
}
}
}