在GUI中,有方法private void jTButtonActionPerformed(Event evt){A},为了使函数模块化,我打算把方法private void jTButtonActionPerformed(Event evt)中的A放到同一个包中的一个新建的类BaseAction中,改为这样的结构:
private void jTButtonActionPerformed(Event evt){BaseAction.method()}
BaseAction中有一个方法为method。但是,我现在在BaseAction中method里面想要调用jTButton.isSelected(),判断BUTTON的状态时,被告知“无法从静态上下文中引用非静态变量”。请问大虾们,如何解决是好。

解决方案 »

  1.   

    [email protected]发油箱帮你参考下吧
      

  2.   

    无法从静态上下文中引用非静态变量:确实这样所谓静态上下文,就是一个静态方法,你不能在其中直接调用所在类的非静态成员变量class circle
    {
      static double PI=3.14;
      double r = 0.0;
      public circle(double r) {this r = r;}
      public double area()    {return PI*this.r*this.r};    //ok
      public static double area(Circle c)    {return PI*c.r*c.r}; //ok
      public static double area2(Circle c)    {return PI*r*r}; //error
    }
    这个会出同样的错误,我没有编译,不确定
      

  3.   

    声明为static的方法中访问实例变量时,不能确保实例变量已经被初始化。所以不能存静态上下文中访问非静态变量。你可以将需要访问的实例变量声明为static并初始化。
      

  4.   

    ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。
    使用这个类型之后,你就可以使用 resultset.first()、last()等等
    ResultSet.TYPE_SCROLL_SENSITIVE:可滚动和TYPE_SCROLL_INSENSITIVE。
    很多人说还有一个功能:当其他用户更改数据库时这个记录也会改变。
    当然这个是放屁的,专门误导别人的。是否支持这个功能要 看你的所用数据库、所用的驱动版本。
    mysql 某一版本好像是这个功能,不过也是其他用户update记录时,会反映到ResultSet。oracle不支持。
    JDBC只是一个规范,具体的实现要数据库厂商。有些不常用的,还是不要用。
      

  5.   

    重点看看 static 关键字吧。
    static修饰的变量时在java类未实例化对象的时候就已经编译存在的。
    static方法也是一样 不用实例化直接调用。
    static{}代码块就更容易理解了  项目只要启动 这个代码块就已经执行了 。