(doto (javax.swing.JFrame.)
(.setDefaultCloseOperation javax.swing.JFrame/DISPOSE_ON_CLOSE)
(.setBounds 30 30 500 500)
(-> .getContentPane
(.add (proxy [javax.swing.JComponent] []
(paint [^java.awt.Graphics g]
;; edit here
;; http://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html
(doto g
(.setColor (java.awt.Color. 0xff9966))
(.drawRect 100 100 300 300)
(.setColor (java.awt.Color. 0xaa88cc))
(.drawString "foo" 200 150)
(.setColor (java.awt.Color. 0x8899ee))
(.drawOval 0 0 100 200)
(.setColor (java.awt.Color. 0x44dd66))
(.drawLine 50 10 100 200)
(.setColor (java.awt.Color. 0x669d77))
(.draw3DRect 30 30 150 280 false)
(.setColor (java.awt.Color. 0xff4433))
(.drawArc 30 40 200 100 200 100))
(let [ps [[10 10]
[30 10]
[100 20]
[110 50]]]
(doto g
(.setColor (java.awt.Color. 0xff5533))
(.drawPolygon (int-array (map first ps))
(int-array (map second ps))
(count ps))))))))
(.setVisible true))
;; examples
;; http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/0320__Image.htm