import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.geom.Ellipse2D; import java.awt.geom.GeneralPath; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.awt.geom.RoundRectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.UIManager; public class House extends JFrame { public House() { setLayout(new BorderLayout()); getContentPane().add(new DrawComponent(), BorderLayout.CENTER); } public static class DrawComponent extends JComponent { private static final GeneralPath ROOF = new GeneralPath(); private static final Rectangle2D BODY = new Rectangle2D.Double(15.0, 50.0, 70.0, 70.0); private static final Color HOUSE = new Color(0.35f, 0.65f, 0.85f); public void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D)g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setStroke(new BasicStroke(3.0f)); ROOF.moveTo(0.0f, 50.0f); ROOF.lineTo(50.0f, 0.0f); ROOF.lineTo(100.0f, 50.0f); ROOF.closePath(); g2d.translate(50.0, 50.0); drawHouse(g2d); g2d.translate(200.0, 0.0); drawHouse(g2d); g2d.translate(0.0, 200.0); drawHouse(g2d); g2d.translate(-200.0, 0.0); drawHouse(g2d); } private void drawHouse(Graphics2D g2d) { g2d.setColor(HOUSE); g2d.fill(ROOF); g2d.fill(BODY); g2d.setColor(Color.BLACK); g2d.draw(ROOF); g2d.draw(BODY); } } public void center() { Dimension screenSize = getToolkit().getScreenSize(); Dimension frameSize = getSize(); Point location = new Point((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); setLocation(location); } public static void main(String[] args) throws Exception { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); JFrame.setDefaultLookAndFeelDecorated(true); DrawFrame f = new DrawFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(new Dimension(400, 400)); f.center(); f.setVisible(true); } }