假设我在一个工程中有两个.java文件,分别是Login.java和Mainwindows.Java,在Login.java中有一个public 类型的全局成员变量islog,类型为boolean,部分源码如下
     public class Login extends JFrame {
....//省略一些东西
        ....
public  static boolean islog=false;
public Login()
{
super("LOGIN Dialog");
        ...
                ...

};
        public  ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
                   ....//当触发某个事件源时置islog为true;                   islog=true;
}      

};
public static void main(String args[])
{
Login application = new Login();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}在Mainwindows.java中我想调用Login.java中的islog,但是测试时却总是false的,为什么?Mainwindows.java部分代码如下:(程序能正确运行)public class MainWindow extends JFrame{
  ...
          ...
     Login l;
     public boolean m_islog;
public MainWindow(boolean bislog)
{
...
                m_islog=bislog;//初始化
...
}
//事件
public ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
          
         if(m_islog)//在Login.java中islog为true, 但这里m_islog却为false
                         ....               
}
};

       public static void main(String args[])
{
MainWindow mw = new MainWindow(new Login().islog);
mw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

解决方案 »

  1.   

    MainWindow mw = new MainWindow(new Login().islog);
    这里初始的时候不就是false吗?
    你后来再去改变login中的islog是不会影响MainWindow的
      

  2.   

    假如我在Login.java中添加MainWindow mw = new MainWindow(islog);代码如下 public  ActionListener al = new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                       ....//当触发某个事件源时置islog为true;              islog=true;
                  MainWindow mw = new MainWindow(islog);//传到MainWindow 中
            }                     
            
        };也不行
      

  3.   

    怎样才能在a.java文件中访问b.java文件中的成员变量啊
      

  4.   

    肯定是false,它是静态的,它的初始值是false 呀