2016-02-05 35 views
1

我想要獲得一個類生成的值,並讓其他類使用它並實時更新它。這是我做過什麼與生成數類:如何編輯另一個類的值?

public Integer red(int red){ 
    this.red = red; 
    return red; 
} 

然後我叫

private int red; 

在其他類我做:

int r = gui.red(); //Gui is the name of the original class 

但它告訴我詮釋着適用於它。如果我將它設置爲0,它始終保持爲零,而其他班級無法改變它。我怎樣才能使這項工作正確?

+0

爲什麼你不像'public int red()'返回一個原始的int? – user3437460

回答

3

如何編輯從另一個類的價值?

我假設你問如何改變和訪問類的私有變量。您可以使用getter和setter方法:

例如:

class GUI{ 
    private int red; 

    public int getRed(){   //you can name it as red() as you wish 
     return red; 
    } 

    public void setRed(int red){ //you can name is as red(int red) 
     this.red = red; 
    } 
} 

從其他類訪問:

public class TestRunner{ 
    public static void main(String[] args){ 
     GUI gui = new GUI(); 
     gui.setRed(val);   //edit gui's red value (val is an int) 
     int color = gui.getRed(); //retrieve red from gui object 
    } 
} 
+0

好吧,所以它的工作原理,另一個問題是我有一個滾動條,從0到100的值,我需要一個監聽器來聽取變化的值。但是因爲我在監聽器外面調用了private int紅色,所以這個值始終保持爲零,如果我在監聽器中調用private int red,它就不起作用。 – ChrisEthanFox

+0

http://pastebin.com/0Z9beZaS – ChrisEthanFox

0

你沒有在紅色函數中傳遞任何值。做到這一點,然後使用setter函數來設置值,並使用getter來查找最新值。

0

製作一個setter方法,如Gui類中提到的Pritam。

public void setRed(Integer red) { 
     this.red = red; 
} 

然後你需要實例化Gui類的一個對象。

Gui objGui = new Gui(); 

然後在該對象上使用setter函數。

objGui.setRed(red); 
0

您可以設置紅色變量作爲private access member。這個變量的範圍只會在你的gui類中。這裏有兩個選項可以改變:

添加setter和getter方法

這可能是訪問類的私有變量最常見的方式。通過創建setter和getter方法,您可以將新值設置爲紅色變量,並「獲取」新的或當前的紅色值。舉個例子:

public void setRed(int red){ 
    this.red = red; 
} 
public int getRed() { 
    return red; 
} 

更改訪問會員

另一種選擇是簡單地將進入構件改變從private int redpublic static int red。不過,我並沒有真正推薦這麼做,因爲所有gui類實例中的紅色值都保持不變。除非你有充分理由使用相同的變量,否則創建setter和getters就是解決方案。

+0

好吧,所以它的工作原理,另一個問題是我有一個滾動條,從0到100的值,我需要一個監聽器來聽取變化的值。但是因爲我在監聽器外面調用了private int紅色,所以這個值始終保持爲零,如果我在監聽器中調用private int red,它就不起作用。 – ChrisEthanFox

+0

@ChrisEthanFox我們很難在沒有看到代碼的情況下提供幫助。請在SO上打開一個新問題,以便可以幫助其他類似情況的人也:) – Brian

相關問題