Java 如何将参数传递到绘制椭圆的paint()中?

Java 如何将参数传递到绘制椭圆的paint()中?,java,methods,graphics,draw,paint,Java,Methods,Graphics,Draw,Paint,我想将另一个方法中的两个整数值传递给绘图(图形g、int a、int b) 公共空白绘制(图形g){ g、 抽绳(10330410330); g、 抽绳(40,30,40,360); 对于(int u=0;u可以在右侧画布上绘制的是draw void中的图形变量,您不能将自己的变量添加到draw void中,但您可以创建一个新的变量,该变量从draw void继承图形g变量,并从调用该变量中获取整数。这可能不理想,但它将不会rk 例如,可以在类的顶部和绘图空间内创建公共图形元素,执行以下操作:

我想将另一个方法中的两个整数值传递给绘图(图形g、int a、int b)

公共空白绘制(图形g){
g、 抽绳(10330410330);
g、 抽绳(40,30,40,360);

对于(int u=0;u可以在右侧画布上绘制的是draw void中的图形变量,您不能将自己的变量添加到draw void中,但您可以创建一个新的变量,该变量从draw void继承图形g变量,并从调用该变量中获取整数。这可能不理想,但它将不会rk

例如,可以在类的顶部和绘图空间内创建公共图形元素,执行以下操作:

publicGraphics = g;
然后在你的新空间里,你可以这样做:

public void drawCustom(int x, int y){
    publicGraphics.drawRect(x, y, 50, 50);
}
当然,您也可以将要传递的变量公开,而不是在调用void时传递它们,但这当然只适用于某些情况

希望这有帮助

编辑:

这对我来说非常有效:

    public Graphics publicGraphics;
 public void paint(Graphics g) {
     g.drawLine(10, 330, 410, 330); 
     g.drawLine(40, 30, 40, 360); 
     publicGraphics = g; 
     } 
 public void drawCustom(int p, int o, int z) { 
     for (int u = 0; u < z; u++) { 
         publicGraphics.drawOval(p, o, 50, 50); 
         } 
     }
公共图形公共图形;
公共空间涂料(图g){
g、 抽绳(10330410330);
g、 抽绳(40,30,40,360);
公共图形=g;
} 
公共无效drawCustom(intp,into,intz){
对于(intu=0;u
然后你可以做
drawCustom(50,50,70);


我不明白为什么要执行for循环,或者为什么还要在paint void和custom draw void中执行它?

简单而简短的回答:必须存储绘制所需的任何内容。在这种情况下,将
z
存储为类中的字段(但给它一个正确的名称!),然后调用
repaint()
以便
paint
方法可以使用它:关于stackoverflow,这里有更多的话要说,要看,还有很多问题。几天前你已经收到了这个链接,它引出了一个问题——为什么你还没有读过它?如果你读过它,为什么不遵循它的建议?一个图形对象只对一次调用绘制方法,除非您自己创建。将其存储在字段中是一个坏主意。静态图形publicGraphics;公共无效绘制(图形g){g.drawLine(10330410330);g.drawLine(40,30,40360);publicGraphics=g;for(int u=0;upublicGraphics
变量将无法保存稳定的图形对象,这可能会导致图像消失或更糟的是,出现NullPointerException。那么,您有更好的解决方案吗?@hovercraftfullofels
    public Graphics publicGraphics;
 public void paint(Graphics g) {
     g.drawLine(10, 330, 410, 330); 
     g.drawLine(40, 30, 40, 360); 
     publicGraphics = g; 
     } 
 public void drawCustom(int p, int o, int z) { 
     for (int u = 0; u < z; u++) { 
         publicGraphics.drawOval(p, o, 50, 50); 
         } 
     }