0

所以我有三个类,一个是主 GUI,一个用于方法的类和一个用于登录窗口的类。

在我的方法课中,我有

public int IsLoggedOn = 0;

public int returnLoggedinValue (){
    return  this.IsLoggedOn ;
}
public int setLoggedOn(){
    System.out.println("logged on ");
    return 1;
}

在我拥有的按钮的登录窗口动作监听器中

methodWin meth = new methodWin ();
methodWin.IsLoggedOn = methodWin.setLoggedOn();
System.out.println("logged in value "+methodWin.IsLoggedOn);

然后返回主 GUI 以结束启动登录窗口的操作侦听器

methodWin meth = new methodWin ();
int ar = meth.IsLoggedOn;
System.out.println("ar is "+ ar);
if (ar==1){
    System.out.println("user is logged in");
    jTextField1.setEnabled(true);
    jButton1.setEnabled(true);
}

我遇到的问题是,如果我从登录窗口中打印出 IsLoggedOn 的值,它已正确地将其更改为“1”,但是当我检查 IsLoggedOn 的值时又回到主 GUI,我得到“0”

抱歉,这对整个 Java 来说都是新手,不太清楚为什么没有看到更改

4

3 回答 3

1

在每种情况下,您都初始化了一个新的 methodWin 实例,只有在登录窗口中,您才会将初始值从 0 更改为 1,这并没有完成。在主 GUI 中,初始值没有被触及,所以它保持为 0。

我假设你会想以某种方式只初始化一个 methodWin 实例并让两组代码都引用它。

于 2013-03-14T06:27:14.800 回答
1

你可以试试这个:

 public class MethodWin{
     private int isLoggedOn=0;
     private static MethodWin objectMethodWin = new MethodWin();
     private MethodWin(){}
     public static MethodWin getInstance(){
         return objectMethodWin;
     }
     public void setIsLoggedOn(int value){
         this.isLoggedOn=value;
     }
     public int getIsLoggedOn(){
         return this.isLoggedOn;
     }
 }

在您的登录窗口操作中:

 MethodWin meth = MethodWin.getInstance();
 meth.setIsLoggedOn(1);
 System.out.println("logged in value "+ meth.getIsLoggedOn);

在主 GUI 中:

 MethodWin meth = MethodWin.getInstance();
 int ar = meth.getIsLoggedOn();
 System.out.println("ar is "+ ar);
 if (ar==1){
     System.out.println("user is logged in");
     jTextField1.setEnabled(true);
     jButton1.setEnabled(true);
 }
于 2013-03-14T07:57:08.050 回答
0
  methodWin.IsLoggedOn = methodWin.setLoggedOn();

在日志中,您将 IsLoggedOn 的值设置为 1;但在主 GUI 中你没有这样做。

将 IsLoggedOn 声明为静态

 public static int IsLoggedOn = 0;

我希望这会有所帮助

于 2013-03-14T06:28:56.673 回答