How to create a Rectangle object in Java using g.fillRect method
Asked Answered
O

3

9

I need to create a rectangle object and then paint it to the applet using paint(). I tried

Rectangle r = new Rectangle(arg,arg1,arg2,arg3);

Then tried to paint it to the applet using

g.draw(r);

It didn't work. Is there a way to do this in java? I have scoured google to within an inch of its life for an answer, but I haven't been able to find an answer. Please help!

Ordinarily answered 31/7, 2012 at 17:19 Comment(0)
I
16

Try this:

public void paint (Graphics g) {    
    Rectangle r = new Rectangle(xPos,yPos,width,height);
    g.fillRect(r.getX(), r.getY(), r.getWidth(), r.getHeight());  
}

[edit]

// With explicit casting
public void paint (Graphics g) {    
        Rectangle r = new Rectangle(xPos, yPos, width, height);
        g.fillRect(
           (int)r.getX(),
           (int)r.getY(),
           (int)r.getWidth(),
           (int)r.getHeight()
        );  
    }
Isobaric answered 31/7, 2012 at 19:10 Comment(6)
succinct and accurateTychon
Actually, that's wrong. The get... methods return double, but the filRect method requires int....Bosom
@Bosom Java uses auto-boxing to automatically convert between these types. Furthermore, in this example no loss of precision will occur since the Rectangle constructor accepts ints so r.getX and r.getY will always give you a double with no decimal part.Isobaric
Assuming that this is a java.awt.Rectangle, the code does not compile, it's as simple as that. Boxing and precision are unrelated to that. The method signature simply does not match. Try it out.Bosom
@Bosom Looks like over the last 6 years this answer has existed it no longer works. I will update my answer with explicit casting.Isobaric
I'm pretty sure that it never worked like this. They neither changed the fillRect method nor the Rectangle class in this regard. In the best case, this may have been a copy+paste accident, but find it utterly confusing where the 14 upvotes came from...?! However, the version with the (int) casts will work, so this is fixed now. (I generally prefer Graphics2D and g.draw(Shape), but that's not the point here)Bosom
S
5

You may try like this:

import java.applet.Applet;
import java.awt.*;

public class Rect1 extends Applet {

  public void paint (Graphics g) {
    g.drawRect (x, y, width, height);    //can use either of the two//
    g.fillRect (x, y, width, height);
    g.setColor(color);
  }

}

where x is x co-ordinate y is y cordinate color=the color you want to use eg Color.blue

if you want to use rectangle object you could do it like this:

import java.applet.Applet;
import java.awt.*;

public class Rect1 extends Applet {

  public void paint (Graphics g) {    
    Rectangle r = new Rectangle(arg,arg1,arg2,arg3);
    g.fillRect(r.getX(), r.getY(), r.getWidth(), r.getHeight());
    g.setColor(color);
  }
}       
Servant answered 31/7, 2012 at 17:30 Comment(1)
if you HAVE to use the rectangle object, then just throw in: g.drawRect(r.getX(), r.getY(), r.getWidth(), r.getHeight());Nancienancy
G
0

Note:drawRect and fillRect are different.

Draws the outline of the specified rectangle:

public void drawRect(int x,
        int y,
        int width,
        int height)

Fills the specified rectangle. The rectangle is filled using the graphics context's current color:

public abstract void fillRect(int x,
        int y,
        int width,
        int height)
Gerfen answered 26/10, 2018 at 1:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.