ColorNames.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.DateFormat;
import java.util.Date;


/**
Scrolling text using JTextArea and JScrollPane.
*/
class ColorNames extends JFrame
{
    public static void main(String argv[])
    {
        ColorNames f = new ColorNames();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.show();
    }


    public ColorNames()
    {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension ss = kit.getScreenSize();
        setSize(ss.width/2,ss.height/3);
        setLocation(ss.width/4,ss.height/4);
        setTitle("CISC370-011 -- JTextArea/JScrollPane demo");
        ButtonPanel sp = new ButtonPanel();
        Container contentPane = getContentPane();
        contentPane.add(sp);
    }
}


class ButtonPanel extends JPanel
{
    public ButtonPanel() {
        JTextArea area = new JTextArea(8,40);
        JScrollPane pane = new JScrollPane(area);
        mkButton("Red",Color.RED,area);
        mkButton("Yellow",Color.YELLOW,area);
        mkButton("Green",Color.GREEN,area);
        this.add(pane);
    }


    void mkButton(final String name,
            final Color bg,final JTextArea area) {
        JButton jb = new JButton(name);
        add(jb);
        jb.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
                { 
                    DateFormat fmt = DateFormat.getDateTimeInstance();
                    setBackground(bg);
                    area.append(name + " " + 
                        fmt.format(new Date()) + "\n");
                }
            });
    }
}