# Java: JPanel - Example

    // Demo Application of use of JPanel for drawing.  -- Fred Swartz
    // Modified from applet version 2001-09-09, 2002-02-07

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;

    ///////////////////////////////////////////////////// DemoDrawing2
    public class DemoDrawing2 extends JFrame {
        //============================================ field variables
        DrawingArea left = new DrawingArea();
        DrawingArea rite = new DrawingArea();
        int flip = 0;

        //================================================ Constructor
        DemoDrawing2() {
            left.setBackground(Color.white);
            rite.setBackground(Color.black);

            JButton b = new JButton("Press Me");
            b.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        // When button is pressed, change colors
                        if (flip == 1) {
                             left.setMyColor(Color.red);
                             rite.setMyColor(Color.blue);
                             flip = 0;
                        }else{
                            left.setMyColor(Color.blue);
                            rite.setMyColor(Color.red);
                            flip = 1;
                        }
                    }
                });

            // Add components to layout
            Container content = this.getContentPane();
            content.setLayout(new FlowLayout());
            content.add(b   );
            content.add(left);
            content.add(rite);

            this.setTitle("Demo Drawing");
            this.pack();
        }//end constructor

        //========================================================= main
        public static void main(String[] args) {
            JFrame windo = new DemoDrawing2();
            windo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            windo.setVisible(true);
        }
    } //endclass

    ///////////////////////////////////////////////////////// DrawingArea
    class DrawingArea extends JPanel {
        //======================================== fields
        Color drawColor;

        public DrawingArea() {
            drawColor = Color.green;
            setPreferredSize(new Dimension(100,100));
        }//end constructor

        //================================================ paintComponent
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(drawColor);
            int w = getWidth();
            int h = getHeight();
            g.drawLine(0, 0, w, h); // upper left to lower right.
            g.drawLine(0, h, w, 0); // lower left to upper right.
        }

        //==================================================== setMyColor
        public void setMyColor(Color x) {
            drawColor = x;
            repaint();  // color changed, must repaint
        }
    } // endclass