我将borderX1-Y2的变量放在顶部,但我没有将它们分配给paint方法。我检查了方法中的值并且它们是正确的,但是当我用另一种方法检查它们时它们是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的值答案 0 :(得分:0)
在调用值之前,需要先初始化值。您可以先拨打paint(Graphics g)
或全局初始化该值。
答案 1 :(得分:0)
您正在使用不同的对象调用paint和其他方法。请确保两者是同一个对象。如果您调用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