JFrame为什么不能在主方法外的类实例化对象
paimport javax.swing.*;
public class ad { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub }}
class  ac {
JFrame asd = new JFrame("asdf");
asd.setSize(400,300);
}
如上,在ac类里面asd.setSize(400,300);语句不停报错,想不明白为什么,跪求解释  >。<~

解决方案 »

  1.   

    不报错就怪了。LZ你好好看看你的代码。按你现在的代码来看,这个ac就相当于是一个内部类,它也是个类。然后ac这个类的代码,你见过有直接在java类里直接即没有变量也没有方法体的情况下写业务逻辑的吗。。?在ac这里面的写法就相当于是这样,你新建了一个类,直接就在类里这样写
    public class test{
        TestClass tc = new TestClass();
        tc.setName("name");
    }
    你看看他能编译不。
    正确的应该是这样
    public class test{
       public static void main(String[] arg){
         TestClass tc = new TestClass();
        tc.setName("name");}
    }
    像你那样,没有方法,只有方法体算什么。就像人没有头只有身体
      

  2.   

    public class test{
      public static void main(String[] arg){
      TestClass tc = new TestClass();
      tc.setName("name");}
    }
      

  3.   

    一楼表激动,我只是随便举例,程序不完整,关键不在这儿,我只是随便起的类名,我查过相关书籍了,上面说要实现JFrame要在其他类实现要用到Java的并发性,我只是想明白为啥JFrame不可以在非主方法所在类里定义
      

  4.   

    没看太懂,给你做了个例子,看看吧。你意思是不是说为什么JFrame不能在别的类里实例化了以后主方法调用那个类,然后就可以用那个类里实例化的JFrame?import javax.swing.JFrame;
    public class Mao {
    JFrame jf =null;
    /**
     * 在这个类的构造方法里实例化JFrame让Test类调用
     */
    public Mao() {
    super();
    this.jf = new JFrame();
    }
    /**
     * 在这个类的一个方法中实例化一个JFrame让Test类调用
     * @return
     */
    public JFrame getFrame(){
    jf = new JFrame();
    jf.setTitle("测试方法返回JFrame");
    jf.setSize(400, 400);
    return jf;
    }
    }
    import javax.swing.JFrame;
    public class Test {
    public static void main(String[] arg){
    /**
     * 测试构造方法中的JFrame实例化
     */
    // Mao m = new Mao();
    // m.jf.setSize(400, 400);
    // m.jf.setTitle("测试构造方法中实例化的JFrame");
    // m.jf.show();
    /**\
     * 测试类里的公共方法中的JFrame实例化
     */
    // Mao m = new Mao();
    // m.getFrame().show();
    /**
     * 内部类测试
     */
    CJFrame.getFrame().show();
    }
    /**
     * 内部类JFrame
     */
    static class CJFrame{
    /**
     * 内部类JFrame实例化
     * @return
     */
    public static JFrame getFrame(){
    JFrame jf = new JFrame();
    jf.setTitle("测试内部类方法实例化并返回JFrame");
    jf.setSize(400, 400);
    return jf;
    }
    }
    }