【问题标题】:Java unable to get the correct value of a modified IntJava 无法获得修改后 Int 的正确值
【发布时间】:2013-03-14 06:21:03
【问题描述】:

所以我有三个类,一个是主 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 的东西很新,不太清楚为什么没有看到变化

【问题讨论】:

  • 首先“坚持Java Coding Convention”。其次,您正在创建 methodWin 类的新实例以获取不起作用的值。
  • @HarryJoy 你是对的。主要问题是这里有两个不同的对象。
  • 将 int 声明为静态工作

标签: java swing methods


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以试试这个:

     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);
    

    在主界面中:

     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);
     }
    

    【讨论】:

      【解决方案3】:
        methodWin.IsLoggedOn = methodWin.setLoggedOn();
      

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

      将 IsLoggedOn 声明为静态

       public static int IsLoggedOn = 0;
      

      我希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 2015-01-24
        • 2014-12-23
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        • 1970-01-01
        相关资源
        最近更新 更多