2013-09-28 42 views
0

中更改我在頂部爲borderX1-Y2創建了變量,但是我沒有將它們分配給paint方法。我檢查了方法內的值,它們是正確的,但是當我用另一種方法檢查它們時,它們是0.我如何讓它們保持它們的值?Java實例字段值僅在方法

public void paint(Graphics g) 
{  
    borderX1 = 20; 
    borderY1 = 20; 
    borderX2 = getWidth(); 
    borderY2 = getHeight(); 

    g.setColor(Color.white); 
    g.fillRect(0, 0, borderX2, borderY2); 
    g.setColor(Color.blue); 
    g.drawRect(borderX1, borderY1, borderX2 - 40, borderY2 - 40); 
} 

繼承人一切(我切無用位)

public class ShapePanel extends JPanel 
{ 
private int borderX1; 
private int borderY1; 
private int borderX2; 
private int borderY2; 

public ShapePanel(){} 

public void paint(Graphics g) 
{ 
    borderX1 = 20; 
    borderY1 = 20; 
    borderX2 = getWidth(); 
    borderY2 = getHeight(); 

    g.setColor(Color.white); 
    g.fillRect(0, 0, borderX2, borderY2); 
    g.setColor(Color.blue); 
    g.drawRect(borderX1, borderY1, borderX2 - 40, borderY2 - 40); 
} 

public int getX1() 
    {return borderX1;} 

public int getY1() 
    {return borderY1;} 

public int getX2() 
    {return borderX2;} 

public int getY2() 
    {return borderY2;} 
} 

我的錯誤是在我的回報,他們返回值爲0爲所有這些

我可以初始化變量像這樣

private int borderX1 = 20; 
private int borderY1 = 20; 
private int borderX2 = 762; 
private int borderY2 = 533; 

但我希望X2和Y2的值根據窗口大小

+0

什麼是類型 - int/double?我猜你正在調用的方法在paint()調用之前。 – imranhasanhira

回答

0

在調用該值之前,您需要先初始化值。您可以通過首先致電paint(Graphics g)或全局初始化該值來完成。

0

您正在使用不同的對象調用paint和other方法。請確保兩者都是同一個對象。如果您調用paint方法,然後調用具有相同對象的另一個方法,則值將被保留。

class Sample{ 
    int borderX1,borderY1,borderX2 ,borderY2 ; 

    public void paint(Graphics g) 
    { 
     borderX1 = 20; 
     borderY1 = 20; 
     borderX2 = getWidth(); 
     borderY2 = getHeight(); 
    } 
    public void fun1(Graphics g){ 

    } 
} 

Sample s1 = new Sample(); 
s1.paint(Graphics)  borderX1 =20,borderY1=20,borderX2=some width ,borderY2 =some height 
Sample s2 = new Sample(); 
s2.fun1();//borderX1=0,borderY1=0,borderX2=0 ,borderY2=0 these values should be 0 
+0

我試過這個 ShapePanel border = new ShapePanel(); public void getBorder() { \t border.paint(g); \t borderX1 = border.getX1(); \t borderY1 = border.getY1(); \t borderX2 = border.getX2(); \t borderY2 = border.getY2(); } 但它表示「g無法解析爲變量」 – LazerWing