2013-03-14 69 views
0

所以我有三個類,一個是主GUI,一個是方法類,一個是登錄窗口類。Java無法獲得修改後的正確值Int

在我的方法類我在登錄窗口的動作偵聽器的按鈕有

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

然後再在動作監聽結束的主要圖形用戶界面,發起登錄窗口我有

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」,但隨後回到主GUI時,當我檢查IsLoggedOn的值時,我得到「0」

對不起, Java的東西,不太清楚爲什麼沒有看到變化

+1

首先「堅持[Java編碼慣例](http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html)」。其次,您正在創建methodWin類的新實例以獲取不起作用的值。 – 2013-03-14 06:25:00

+0

@HarryJoy你是對的。主要問題是這裏有兩個不同的對象。 – 2013-03-14 06:29:22

+0

聲明int爲靜態工作 – user2168435 2013-03-14 06:36:58

回答

0
methodWin.IsLoggedOn = methodWin.setLoggedOn(); 

在日誌中,您將IsLoggedOn的值設置爲1; 但在主要的GUI中,你並沒有這樣做。

聲明IsLoggedOn靜態

public static int IsLoggedOn = 0; 

我希望這將有助於

+0

謝謝soo將它改變爲靜態工作的魅力。 – user2168435 2013-03-14 06:31:24

+0

歡迎您:) – 2013-03-14 06:54:34

1

在每種情況下,您初始化methodWin的一個新實例,只有在登錄窗口中,您將初始值從0更改爲1,這是不完成的。在主GUI中,初始值沒有被觸及,因此它保持爲0.

我假設你會以某種方式想初始化methodWin的一個實例並獲取兩組代碼來引用它。

1

試試這個:在主界面窗口作用

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

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