The basic trick is to subclass JPanel (I'm assuming you're using Swing) and override the paintComponent() method. Your method will use java.awt.Graphics2D.draw(Shape) to render your polypolygon. You could put draw() in a loop and iterate over a collection of polygon edges (java.awt.geom.Line2D), or you could build a java.awt.geom.GeneralPath for each polygon, inner and outer, and then invoke draw() on each one.