0

上部にborderX1-Y2の変数を作成しましたが、ペイントメソッドまで割り当てませんでした。メソッド内の値を確認したところ、値は正しいのですが、別のメソッドで確認すると 0 です。値を保持するにはどうすればよいですか?

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 の値を変更したい

4

2 に答える 2

0

値を呼び出す前に、最初に値を初期化する必要があります。paint(Graphics g)最初に呼び出すか、値をグローバルに初期化することで実行できます。

于 2013-09-28T15:15:21.597 に答える