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