import javax.swing.*;
import java.awt.*;
public class  SampleProgram
{
static JFrame f1;
JPanel p1;
JButton b1;
public SampleProgram()
{
p1=new JPanel();
b1=new JButton("确定");
p1.add(b1);
b1.setLabel("取消");
p1.add(b1);
} public static void main(String[] args) 
{
 f1=new JFrame("程序的窗口");
 f1.getContentPane().add(p1);
 f1.setSize(300,300);
}
}

解决方案 »

  1.   

    f1.getContentPane().add(p1);//静态变量不能取用非静态变量
      

  2.   

    javac 一下不就全明白了么?
    -----
    SampleProgram.java:20: non-static variable p1 cannot be referenced from a static
     context
    f1.getContentPane().add(p1);
                            ^
    1 error
      

  3.   

    import javax.swing.*;
    import java.awt.*;
    public class  SampleProgram
    {
    static JFrame f1;
             // 改了這裡
    static JPanel p1;
    JButton b1;
    public SampleProgram()
    {
    p1=new JPanel();
    b1=new JButton("确定");
    p1.add(b1);
    b1.setLabel("取消");
    p1.add(b1);
    } public static void main(String[] args) 
    {
     f1=new JFrame("程序的窗口");
     f1.getContentPane().add(p1);
     f1.setSize(300,300);
    }
    }
      

  4.   

    f1.getContentPane().add(p1);//静态变量不能取用非静态变量那我应该怎么改呢?
    我是否可以把p1也声明成静态变量呢?
    可是那样做好象 不行的啊?
    帮帮在下啊。
      

  5.   

    你的fl为什么不在main里声明呢,不过这倒不是问题所在,只是没人这么写.
    f1.getContentPane().add(p1); 把这句要做的事情移到构造方法里去,在那里用这句
    this.getContentPane().add(p1);
      

  6.   

    JFrame f1;
    JPanel p1;
    JButton b1;
    public JPanel buildPanel(){
    p1=new JPanel();
    b1=new JButton("确定");
    p1.add(b1);
    b1.setLabel("取消");
    p1.add(b1);
    return p1;
    } public static void main(String[] args) {
    SampleProgram sp = new SampleProgram();
    sp.f1=new JFrame("程序的窗口");
    sp.f1.getContentPane().add(sp.buildPanel());
    sp.f1.setSize(300,300);
    }