Package stdlib

Class StdDraw

java.lang.Object
stdlib.StdDraw
All Implemented Interfaces:
ActionListener, KeyListener, MouseListener, MouseMotionListener, EventListener

Standard draw. This class provides a basic capability for creating drawings with your programs. It uses a simple graphics model that allows you to create drawings consisting of points, lines, and curves in a window on your computer and to save the drawings to a file.

For additional documentation, see Section 1.5 of Introduction to Programming in Java: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Color
     
    static final Color
     
    static final Color
    Shade of blue used in Introduction to Programming in Java.
    static final Color
     
    static final Color
    Shade of red used in Algorithms 4th edition.
    private static final double
     
    static final Color
     
    static final Color
     
    private static final Color
     
    private static final Font
     
    private static final Color
     
    private static final double
     
    private static final int
     
    private static final double
     
    private static final double
     
    private static final double
     
    private static final double
     
    private static boolean
     
    private static Font
     
    private static JFrame
     
    static final Color
     
    static final Color
     
    private static int
     
    private static Object
     
    private static TreeSet<Integer>
     
    private static LinkedList<Character>
     
    static final Color
     
    static final Color
     
    private static Object
     
    private static boolean
     
    private static double
     
    private static double
     
    private static Graphics2D
     
    private static BufferedImage
     
    private static Graphics2D
     
    private static BufferedImage
     
    static final Color
     
    private static Color
     
    private static double
     
    static final Color
     
    static final Color
     
    private static StdDraw
     
    static final Color
     
    private static int
     
    private static double
     
    private static double
     
    static final Color
     
    private static double
     
    private static double
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    This method cannot be called directly.
    static void
    arc(double x, double y, double r, double angle1, double angle2)
    Draw an arc of radius r, centered on (x, y), from angle1 to angle2 (in degrees).
    static void
    circle(double x, double y, double r)
    Draw a circle of radius r, centered on (x, y).
    static void
    Clear the screen to the default color (white).
    static void
    clear(Color color)
    Clear the screen to the given color.
    private static JMenuBar
     
    private static void
     
    static void
    ellipse(double x, double y, double semiMajorAxis, double semiMinorAxis)
    Draw an ellipse with given semimajor and semiminor axes, centered on (x, y).
    private static double
    factorX(double w)
     
    private static double
    factorY(double h)
     
    static void
    filledCircle(double x, double y, double r)
    Draw filled circle of radius r, centered on (x, y).
    static void
    filledEllipse(double x, double y, double semiMajorAxis, double semiMinorAxis)
    Draw an ellipse with given semimajor and semiminor axes, centered on (x, y).
    static void
    filledPolygon(double[] x, double[] y)
    Draw a filled polygon with the given (x[i], y[i]) coordinates.
    static void
    filledRectangle(double x, double y, double halfWidth, double halfHeight)
    Draw a filled rectangle of given half width and half height, centered on (x, y).
    static void
    filledSquare(double x, double y, double r)
    Draw a filled square of side length 2r, centered on (x, y).
    static Font
    Get the current font.
    private static Image
    getImage(String filename)
     
    static Color
    Get the current pen color.
    static double
    Get the current pen radius.
    static boolean
    Has the user typed a key?
    private static void
     
    static boolean
    isKeyPressed(int keycode)
    Is the keycode currently being pressed? This method takes as an argument the keycode (corresponding to a physical key).
    void
    This method cannot be called directly.
    void
    This method cannot be called directly.
    void
    This method cannot be called directly.
    static void
    line(double x0, double y0, double x1, double y1)
    Draw a line from (x0, y0) to (x1, y1).
    static void
    main(String[] args)
    Test client.
    void
    This method cannot be called directly.
    void
    This method cannot be called directly.
    void
    This method cannot be called directly.
    void
    This method cannot be called directly.
    void
    This method cannot be called directly.
    static boolean
    Is the mouse being pressed?
    void
    This method cannot be called directly.
    void
    This method cannot be called directly.
    static double
    What is the x-coordinate of the mouse?
    static double
    What is the y-coordinate of the mouse?
    static char
    What is the next key that was typed by the user? This method returns a Unicode character corresponding to the key typed (such as 'a' or 'A').
    static void
    picture(double x, double y, String s)
    Draw picture (gif, jpg, or png) centered on (x, y).
    static void
    picture(double x, double y, String s, double degrees)
    Draw picture (gif, jpg, or png) centered on (x, y), rotated given number of degrees
    static void
    picture(double x, double y, String s, double w, double h)
    Draw picture (gif, jpg, or png) centered on (x, y), rescaled to w-by-h.
    static void
    picture(double x, double y, String s, double w, double h, double degrees)
    Draw picture (gif, jpg, or png) centered on (x, y), rotated given number of degrees, rescaled to w-by-h.
    private static void
    pixel(double x, double y)
    Draw one pixel at (x, y).
    static void
    point(double x, double y)
    Draw a point at (x, y).
    static void
    polygon(double[] x, double[] y)
    Draw a polygon with the given (x[i], y[i]) coordinates.
    static void
    rectangle(double x, double y, double halfWidth, double halfHeight)
    Draw a rectangle of given half width and half height, centered on (x, y).
    static void
    save(String filename)
    Save onscreen image to file - suffix must be png, jpg, or gif.
    private static double
    scaleX(double x)
     
    private static double
    scaleY(double y)
     
    static void
    Set the window size to the default size 512-by-512 pixels.
    static void
    setCanvasSize(int w, int h)
    Set the window size to w-by-h pixels.
    static void
    Set the font to the default font (sans serif, 16 point).
    static void
    Set the font to the given value.
    static void
    Set the pen color to the default color (black).
    static void
    Set the pen color to the given color.
    static void
    Set the pen size to the default (.002).
    static void
    setPenRadius(double r)
    Set the radius of the pen to the given size.
    static void
    setScale(double min, double max)
    Set the x-scale and y-scale (a 10% border is added to the values)
    static void
    Set the x-scale to be the default (between 0.0 and 1.0).
    static void
    setXscale(double min, double max)
    Set the x-scale (a 10% border is added to the values)
    static void
    Set the y-scale to be the default (between 0.0 and 1.0).
    static void
    setYscale(double min, double max)
    Set the y-scale (a 10% border is added to the values).
    static void
    Display on-screen and turn off animation mode: subsequent calls to drawing methods such as line(), circle(), and square() will be displayed on screen when called.
    static void
    show(int t)
    Display on screen, pause for t milliseconds, and turn on animation mode: subsequent calls to drawing methods such as line(), circle(), and square() will not be displayed on screen until the next call to show().
    static void
    square(double x, double y, double r)
    Draw a square of side length 2r, centered on (x, y).
    static void
    text(double x, double y, String s)
    Write the given text string in the current font, centered on (x, y).
    static void
    text(double x, double y, String s, double degrees)
    Write the given text string in the current font, centered on (x, y) and rotated by the specified number of degrees
    static void
    textLeft(double x, double y, String s)
    Write the given text string in the current font, left-aligned at (x, y).
    static void
    textRight(double x, double y, String s)
    Write the given text string in the current font, right-aligned at (x, y).
    private static double
    userX(double x)
     
    private static double
    userY(double y)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

  • Method Details

    • setCanvasSize

      public static void setCanvasSize()
      Set the window size to the default size 512-by-512 pixels.
    • setCanvasSize

      public static void setCanvasSize(int w, int h)
      Set the window size to w-by-h pixels.
      Parameters:
      w - the width as a number of pixels
      h - the height as a number of pixels
      Throws:
      RuntimeException - if the width or height is 0 or negative
    • init

      private static void init()
    • createMenuBar

      private static JMenuBar createMenuBar()
    • setXscale

      public static void setXscale()
      Set the x-scale to be the default (between 0.0 and 1.0).
    • setYscale

      public static void setYscale()
      Set the y-scale to be the default (between 0.0 and 1.0).
    • setXscale

      public static void setXscale(double min, double max)
      Set the x-scale (a 10% border is added to the values)
      Parameters:
      min - the minimum value of the x-scale
      max - the maximum value of the x-scale
    • setYscale

      public static void setYscale(double min, double max)
      Set the y-scale (a 10% border is added to the values).
      Parameters:
      min - the minimum value of the y-scale
      max - the maximum value of the y-scale
    • setScale

      public static void setScale(double min, double max)
      Set the x-scale and y-scale (a 10% border is added to the values)
      Parameters:
      min - the minimum value of the x- and y-scales
      max - the maximum value of the x- and y-scales
    • scaleX

      private static double scaleX(double x)
    • scaleY

      private static double scaleY(double y)
    • factorX

      private static double factorX(double w)
    • factorY

      private static double factorY(double h)
    • userX

      private static double userX(double x)
    • userY

      private static double userY(double y)
    • clear

      public static void clear()
      Clear the screen to the default color (white).
    • clear

      public static void clear(Color color)
      Clear the screen to the given color.
      Parameters:
      color - the Color to make the background
    • getPenRadius

      public static double getPenRadius()
      Get the current pen radius.
    • setPenRadius

      public static void setPenRadius()
      Set the pen size to the default (.002).
    • setPenRadius

      public static void setPenRadius(double r)
      Set the radius of the pen to the given size.
      Parameters:
      r - the radius of the pen
      Throws:
      RuntimeException - if r is negative
    • getPenColor

      public static Color getPenColor()
      Get the current pen color.
    • setPenColor

      public static void setPenColor()
      Set the pen color to the default color (black).
    • setPenColor

      public static void setPenColor(Color color)
      Set the pen color to the given color. The available pen colors are BLACK, BLUE, CYAN, DARK_GRAY, GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE, and YELLOW.
      Parameters:
      color - the Color to make the pen
    • getFont

      public static Font getFont()
      Get the current font.
    • setFont

      public static void setFont()
      Set the font to the default font (sans serif, 16 point).
    • setFont

      public static void setFont(Font f)
      Set the font to the given value.
      Parameters:
      f - the font to make text
    • line

      public static void line(double x0, double y0, double x1, double y1)
      Draw a line from (x0, y0) to (x1, y1).
      Parameters:
      x0 - the x-coordinate of the starting point
      y0 - the y-coordinate of the starting point
      x1 - the x-coordinate of the destination point
      y1 - the y-coordinate of the destination point
    • pixel

      private static void pixel(double x, double y)
      Draw one pixel at (x, y).
      Parameters:
      x - the x-coordinate of the pixel
      y - the y-coordinate of the pixel
    • point

      public static void point(double x, double y)
      Draw a point at (x, y).
      Parameters:
      x - the x-coordinate of the point
      y - the y-coordinate of the point
    • circle

      public static void circle(double x, double y, double r)
      Draw a circle of radius r, centered on (x, y).
      Parameters:
      x - the x-coordinate of the center of the circle
      y - the y-coordinate of the center of the circle
      r - the radius of the circle
      Throws:
      RuntimeException - if the radius of the circle is negative
    • filledCircle

      public static void filledCircle(double x, double y, double r)
      Draw filled circle of radius r, centered on (x, y).
      Parameters:
      x - the x-coordinate of the center of the circle
      y - the y-coordinate of the center of the circle
      r - the radius of the circle
      Throws:
      RuntimeException - if the radius of the circle is negative
    • ellipse

      public static void ellipse(double x, double y, double semiMajorAxis, double semiMinorAxis)
      Draw an ellipse with given semimajor and semiminor axes, centered on (x, y).
      Parameters:
      x - the x-coordinate of the center of the ellipse
      y - the y-coordinate of the center of the ellipse
      semiMajorAxis - is the semimajor axis of the ellipse
      semiMinorAxis - is the semiminor axis of the ellipse
      Throws:
      RuntimeException - if either of the axes are negative
    • filledEllipse

      public static void filledEllipse(double x, double y, double semiMajorAxis, double semiMinorAxis)
      Draw an ellipse with given semimajor and semiminor axes, centered on (x, y).
      Parameters:
      x - the x-coordinate of the center of the ellipse
      y - the y-coordinate of the center of the ellipse
      semiMajorAxis - is the semimajor axis of the ellipse
      semiMinorAxis - is the semiminor axis of the ellipse
      Throws:
      RuntimeException - if either of the axes are negative
    • arc

      public static void arc(double x, double y, double r, double angle1, double angle2)
      Draw an arc of radius r, centered on (x, y), from angle1 to angle2 (in degrees).
      Parameters:
      x - the x-coordinate of the center of the circle
      y - the y-coordinate of the center of the circle
      r - the radius of the circle
      angle1 - the starting angle. 0 would mean an arc beginning at 3 o'clock.
      angle2 - the angle at the end of the arc. For example, if you want a 90 degree arc, then angle2 should be angle1 + 90.
      Throws:
      RuntimeException - if the radius of the circle is negative
    • square

      public static void square(double x, double y, double r)
      Draw a square of side length 2r, centered on (x, y).
      Parameters:
      x - the x-coordinate of the center of the square
      y - the y-coordinate of the center of the square
      r - radius is half the length of any side of the square
      Throws:
      RuntimeException - if r is negative
    • filledSquare

      public static void filledSquare(double x, double y, double r)
      Draw a filled square of side length 2r, centered on (x, y).
      Parameters:
      x - the x-coordinate of the center of the square
      y - the y-coordinate of the center of the square
      r - radius is half the length of any side of the square
      Throws:
      RuntimeException - if r is negative
    • rectangle

      public static void rectangle(double x, double y, double halfWidth, double halfHeight)
      Draw a rectangle of given half width and half height, centered on (x, y).
      Parameters:
      x - the x-coordinate of the center of the rectangle
      y - the y-coordinate of the center of the rectangle
      halfWidth - is half the width of the rectangle
      halfHeight - is half the height of the rectangle
      Throws:
      RuntimeException - if halfWidth or halfHeight is negative
    • filledRectangle

      public static void filledRectangle(double x, double y, double halfWidth, double halfHeight)
      Draw a filled rectangle of given half width and half height, centered on (x, y).
      Parameters:
      x - the x-coordinate of the center of the rectangle
      y - the y-coordinate of the center of the rectangle
      halfWidth - is half the width of the rectangle
      halfHeight - is half the height of the rectangle
      Throws:
      RuntimeException - if halfWidth or halfHeight is negative
    • polygon

      public static void polygon(double[] x, double[] y)
      Draw a polygon with the given (x[i], y[i]) coordinates.
      Parameters:
      x - an array of all the x-coordindates of the polygon
      y - an array of all the y-coordindates of the polygon
    • filledPolygon

      public static void filledPolygon(double[] x, double[] y)
      Draw a filled polygon with the given (x[i], y[i]) coordinates.
      Parameters:
      x - an array of all the x-coordindates of the polygon
      y - an array of all the y-coordindates of the polygon
    • getImage

      private static Image getImage(String filename)
    • picture

      public static void picture(double x, double y, String s)
      Draw picture (gif, jpg, or png) centered on (x, y).
      Parameters:
      x - the center x-coordinate of the image
      y - the center y-coordinate of the image
      s - the name of the image/picture, e.g., "ball.gif"
      Throws:
      RuntimeException - if the image is corrupt
    • picture

      public static void picture(double x, double y, String s, double degrees)
      Draw picture (gif, jpg, or png) centered on (x, y), rotated given number of degrees
      Parameters:
      x - the center x-coordinate of the image
      y - the center y-coordinate of the image
      s - the name of the image/picture, e.g., "ball.gif"
      degrees - is the number of degrees to rotate counterclockwise
      Throws:
      RuntimeException - if the image is corrupt
    • picture

      public static void picture(double x, double y, String s, double w, double h)
      Draw picture (gif, jpg, or png) centered on (x, y), rescaled to w-by-h.
      Parameters:
      x - the center x coordinate of the image
      y - the center y coordinate of the image
      s - the name of the image/picture, e.g., "ball.gif"
      w - the width of the image
      h - the height of the image
      Throws:
      RuntimeException - if the width height are negative
      RuntimeException - if the image is corrupt
    • picture

      public static void picture(double x, double y, String s, double w, double h, double degrees)
      Draw picture (gif, jpg, or png) centered on (x, y), rotated given number of degrees, rescaled to w-by-h.
      Parameters:
      x - the center x-coordinate of the image
      y - the center y-coordinate of the image
      s - the name of the image/picture, e.g., "ball.gif"
      w - the width of the image
      h - the height of the image
      degrees - is the number of degrees to rotate counterclockwise
      Throws:
      RuntimeException - if the image is corrupt
    • text

      public static void text(double x, double y, String s)
      Write the given text string in the current font, centered on (x, y).
      Parameters:
      x - the center x-coordinate of the text
      y - the center y-coordinate of the text
      s - the text
    • text

      public static void text(double x, double y, String s, double degrees)
      Write the given text string in the current font, centered on (x, y) and rotated by the specified number of degrees
      Parameters:
      x - the center x-coordinate of the text
      y - the center y-coordinate of the text
      s - the text
      degrees - is the number of degrees to rotate counterclockwise
    • textLeft

      public static void textLeft(double x, double y, String s)
      Write the given text string in the current font, left-aligned at (x, y).
      Parameters:
      x - the x-coordinate of the text
      y - the y-coordinate of the text
      s - the text
    • textRight

      public static void textRight(double x, double y, String s)
      Write the given text string in the current font, right-aligned at (x, y).
      Parameters:
      x - the x-coordinate of the text
      y - the y-coordinate of the text
      s - the text
    • show

      public static void show(int t)
      Display on screen, pause for t milliseconds, and turn on animation mode: subsequent calls to drawing methods such as line(), circle(), and square() will not be displayed on screen until the next call to show(). This is useful for producing animations (clear the screen, draw a bunch of shapes, display on screen for a fixed amount of time, and repeat). It also speeds up drawing a huge number of shapes (call show(0) to defer drawing on screen, draw the shapes, and call show(0) to display them all on screen at once).
      Parameters:
      t - number of milliseconds
    • show

      public static void show()
      Display on-screen and turn off animation mode: subsequent calls to drawing methods such as line(), circle(), and square() will be displayed on screen when called. This is the default.
    • draw

      private static void draw()
    • save

      public static void save(String filename)
      Save onscreen image to file - suffix must be png, jpg, or gif.
      Parameters:
      filename - the name of the file with one of the required suffixes
    • actionPerformed

      public void actionPerformed(ActionEvent e)
      This method cannot be called directly.
      Specified by:
      actionPerformed in interface ActionListener
    • mousePressed

      public static boolean mousePressed()
      Is the mouse being pressed?
      Returns:
      true or false
    • mouseX

      public static double mouseX()
      What is the x-coordinate of the mouse?
      Returns:
      the value of the x-coordinate of the mouse
    • mouseY

      public static double mouseY()
      What is the y-coordinate of the mouse?
      Returns:
      the value of the y-coordinate of the mouse
    • mouseClicked

      public void mouseClicked(MouseEvent e)
      This method cannot be called directly.
      Specified by:
      mouseClicked in interface MouseListener
    • mouseEntered

      public void mouseEntered(MouseEvent e)
      This method cannot be called directly.
      Specified by:
      mouseEntered in interface MouseListener
    • mouseExited

      public void mouseExited(MouseEvent e)
      This method cannot be called directly.
      Specified by:
      mouseExited in interface MouseListener
    • mousePressed

      public void mousePressed(MouseEvent e)
      This method cannot be called directly.
      Specified by:
      mousePressed in interface MouseListener
    • mouseReleased

      public void mouseReleased(MouseEvent e)
      This method cannot be called directly.
      Specified by:
      mouseReleased in interface MouseListener
    • mouseDragged

      public void mouseDragged(MouseEvent e)
      This method cannot be called directly.
      Specified by:
      mouseDragged in interface MouseMotionListener
    • mouseMoved

      public void mouseMoved(MouseEvent e)
      This method cannot be called directly.
      Specified by:
      mouseMoved in interface MouseMotionListener
    • hasNextKeyTyped

      public static boolean hasNextKeyTyped()
      Has the user typed a key?
      Returns:
      true if the user has typed a key, false otherwise
    • nextKeyTyped

      public static char nextKeyTyped()
      What is the next key that was typed by the user? This method returns a Unicode character corresponding to the key typed (such as 'a' or 'A'). It cannot identify action keys (such as F1 and arrow keys) or modifier keys (such as control).
      Returns:
      the next Unicode key typed
    • isKeyPressed

      public static boolean isKeyPressed(int keycode)
      Is the keycode currently being pressed? This method takes as an argument the keycode (corresponding to a physical key). It can handle action keys (such as F1 and arrow keys) and modifier keys (such as shift and control). See KeyEvent.java for a description of key codes.
      Returns:
      true if keycode is currently being pressed, false otherwise
    • keyTyped

      public void keyTyped(KeyEvent e)
      This method cannot be called directly.
      Specified by:
      keyTyped in interface KeyListener
    • keyPressed

      public void keyPressed(KeyEvent e)
      This method cannot be called directly.
      Specified by:
      keyPressed in interface KeyListener
    • keyReleased

      public void keyReleased(KeyEvent e)
      This method cannot be called directly.
      Specified by:
      keyReleased in interface KeyListener
    • main

      public static void main(String[] args)
      Test client.