# Java: Example -- drawHouse

This example shows how to build our own methods that call other methods of ours. This JPanel can be used as a component.
Problem: We need to write a new method that does something. We already have a method that does only part of the problem, but not all of it. How can we write this?
Solution: We can use methods that we wrote earlier so that we don't have to write everything again.

      1 /**
      2   * HousePanel.java - Component to draw houses.
      3   * This class functions as a GUI component, Add to a layout.
      4   * @version 22 June 1998, revised July 1999,  2002-02-07 JPanel
      5   * @author Fred Swartz, Adapted from 'Java for Students'
      6   */
      7 import java.awt.*;
      8 import javax.swing.*;
      9
     10 public class HousePanel extends JPanel {
     11     //====================================================== constructor
     12     public HousePanel() {
     13         setPreferredSize(new Dimension(100, 100));
     14         setBackground(new Color(224, 224, 224));
     15     }//end constructor
     16
     17     //=================================================== paintComponent
     18     public void paintComponent(Graphics g) {
     19         super.paintComponent(g);
     20         drawHouse(g, 10, 90, 30, 15);
     21         drawHouse(g, 60, 90, 20, 60);
     22     } //end paintComponent
     23
     24     //======================================================= drawHouse
     25     // Draw a house with a roof 50% of the height.
     26     void drawHouse(Graphics g, int x, int y, int width, int height) {
     27         // (x,y) is the bottom left corner of the house.
     28         g.drawRect(x, y-height, width, height);
     29         drawTriangle(g, x, y-height, width, height/2);
     30     }//end drawHouse
     31
     32     //==================================================== drawTriangle
     33     // Draw equilateral triangle
     34     void drawTriangle(Graphics tg, int x, int y, int base, int height) {
     35         tg.drawLine(x, y, x+base, y);            // draw base
     36         tg.drawLine(x+base, y, x + base/2, y - height); // draw right
     37         tg.drawLine(x + base/2, y-height, x, y); // draw left
     38     }//end drzwTriangle
     39 }//end class