Student: Sean Spalding
Due Date April 22, 1997
Go somewhere else
or proceed down the page to view the source for this dazzling piece of contemporary art.
------------------------------------------- snip ---------------------------------------------
// Name: Texter.java
// Author: Sean Spalding
// Reason: Like there are any reasons in life! OK, it was for an assignment.
import java.applet.Applet;
import java.awt.*;
public class Texter extends Applet
{
Button blackButton, yellowButton, blueButton, redButton; // variables for Buttons
TextField textLabel, textField = null; // variables for TextFields
Choice fontChoice; // variable for dropdown list
Font font = null; // variable for font settings
int style = Font.PLAIN, size = 12; // variables for font attributes
Checkbox cb1, cb2; // variables for type style checkboxes
Checkbox cb3, cb4; // variables for type size radio buttons
CheckboxGroup cbg; // variable for the group for the radio buttons
public void init()
{
//first time running program
// create the variables for panels needed to hold the GUI components
Panel labelPanel, fieldPanel, stylePanel, sizePanel, fontPanel, middlePanel, bottomPanel, buttonPanel;
// instantiate the default font settings
font = new Font("Courier", Font.PLAIN, 12);
// instantiate the uneditable textfield
textLabel = new TextField("Enter the line of text:", 25);
textLabel.setEditable(false);
// panel to hold the non-editable text field
labelPanel = new Panel();
labelPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
labelPanel.add(textLabel);
// instantiate the textfield
textField = new TextField(35);
// panel to hold the editable text field
fieldPanel = new Panel();
fieldPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
fieldPanel.add(textField);
// instantiate the style checkboxes
cb1 = new Checkbox("Italic");
cb2 = new Checkbox("Bold");
// panel to hold the style checkboxes
stylePanel = new Panel();
stylePanel.setLayout(new GridLayout(2,1));
stylePanel.add(cb1);
stylePanel.add(cb2);
// instantiate the size checkboxes and their checkboxgroup
cbg = new CheckboxGroup();
cb3 = new Checkbox("size 12", cbg, false);
cb4 = new Checkbox("size 14", cbg, false);
// panel to hold the size radio buttons
sizePanel = new Panel();
sizePanel.setLayout(new GridLayout(2,1));
sizePanel.add(cb3);
sizePanel.add(cb4);
// instantiate the drop down list box and its items
fontChoice = new Choice();
fontChoice.addItem("TimesRoman");
fontChoice.addItem("Courier");
fontChoice.addItem("Helvetica");
fontChoice.addItem("Arial");
// panel to hold the list box
fontPanel = new Panel();
fontPanel.setLayout(new GridLayout(0,1));
fontPanel.add(fontChoice);
// panel to hold the checkbox, radio button and list panels
middlePanel = new Panel();
middlePanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
middlePanel.add(stylePanel);
middlePanel.add(sizePanel);
middlePanel.add(fontPanel);
// instantiate the buttons
blackButton = new Button();
blackButton.setLabel("Black");
yellowButton = new Button();
yellowButton.setLabel("Yellow");
blueButton = new Button();
blueButton.setLabel("Blue");
redButton = new Button();
redButton.setLabel("Red");
buttonPanel = new Panel(); // panel to hold the buttons
buttonPanel.setLayout(new GridLayout(0,4));
buttonPanel.add(blackButton);
buttonPanel.add(yellowButton);
buttonPanel.add(blueButton);
buttonPanel.add(redButton);
bottomPanel = new Panel(); // panel to hold the buttonPanel
bottomPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 10));
bottomPanel.add(buttonPanel);
// add the components to the applet
setLayout(new GridLayout(5,1));
add(labelPanel);
add(fieldPanel);
add(middlePanel);
add(bottomPanel);
validate();
}
public boolean action(Event e, Object arg) // an event has taken place
{
Object target = e.target; // define variable to hold target 'component' value
if (target instanceof Checkbox) // was it a checkbox that was clicked?
{
if ((target == cb3) || (target == cb4)) // was it a size checkbox?
{
Checkbox selected = (cbg.getCurrent()); // variable of type checkbox
if (selected == cb3) // was it 'size 12' that was checked?
{
size = 12;
repaint();
return true; // event handled
}
if (selected == cb4) // was it 'size 14' that was checked?
{
size = 14;
repaint();
return true; // event handled
}
}
if ((target == cb1) || (target == cb2)) // was it a style checkbox that was clicked?
{
if (cb1.getState() && cb2.getState()) // first check if that makes both boxes checked
{
style = Font.ITALIC + Font.BOLD; // change the setting
repaint(); // update the screen
return true; // event handled
}
else if (cb1.getState()) // not both boxes, is it just 'italic'?
{
style = Font.ITALIC;
repaint();
return true; // event handled
}
else if (cb2.getState()) // not 'italic' is it 'bold'?
{
style = Font.BOLD;
repaint();
return true; // event handled
}
else // no boxes checked, must be 'plain'
{
style = Font.PLAIN;
repaint();
return true; // event handled
}
}
}
if (target instanceof Choice) // was a choice made from the list?
{
repaint();
return true;
}
if (target instanceof Button) // was it a button that was clicked?
{
if (target == blackButton) // was it the 'black' button?
{
textField.setForeground(Color.black); // change fore colour setting of text
repaint(); // update the textfield
return true; // event handled
}
if (target == yellowButton)
{
textField.setForeground(Color.yellow);
repaint();
return true;
}
if (target == blueButton)
{
textField.setForeground(Color.blue);
repaint();
return true;
}
if (target == redButton)
{
textField.setForeground(Color.red);
repaint();
return true;
}
}
return false;
}
public void paint(Graphics g) // contains code to update font in textField
{
font = new Font(fontChoice.getSelectedItem(), style, size);
textField.setFont(font);
}
}
------------------------------------------- snip ---------------------------------------------