The Quotes2 Applet:
Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Quotes2 extends Applet {
String[] text = {"Hallo, wie geht´s?",
"Hi, how do you do?",
"Hey, hur mår du?"};
Label quote = new Label (text[0], Label.CENTER);
final public static int UPPERCASE = 1;
final public static int LOWERCASE = 2;
final public static int FONT = 3;
final public static int DEUTSCH = 4;
final public static int ENGLISH = 5;
final public static int SVENSKA = 6;
final public static int BOLD = 7;
final public static int ITALIC = 8;
Quote2_GUI gui = new Quote2_GUI (this);
//===========================================================
// Initializes the applet with default settings.
//===========================================================
public void init() {
quote.setFont (new Font ("Arial", Font.PLAIN, 14));
gui.init (quote);
} // method init
//===========================================================
// Sets the quote text to upper case.
//===========================================================
public void set_uppercase() {
quote.setText (quote.getText().toUpperCase());
} // method set_uppercase
//===========================================================
// Sets the quote text to lower case.
//===========================================================
public void set_lowercase() {
quote.setText (quote.getText().toLowerCase());
} // method set_lowercase
//===========================================================
// Changes the quote text to a deutsch statement.
//===========================================================
public void set_deutsch() {
quote.setText (text[0]);
} // method set_deutsch
//===========================================================
// Changes the quote text to a english statement.
//===========================================================
public void set_english() {
quote.setText (text[1]);
} // method set_english
//===========================================================
// Changes the quote text to a svenska statement.
//===========================================================
public void set_svenska()
{
quote.setText (text[2]);
}
//===========================================================
// Changes the font of the quote text.
//===========================================================
public void set_font (String font)
{
quote.setFont (new Font (font, quote.getFont().getStyle(), 14));
}
//===========================================================
// Toggles the italics setting of the quote text.
//===========================================================
public void set_italics (boolean on)
{
Font font = quote.getFont();
int style = font.getStyle();
// Turn italic on or off
if (on) {
if (! font.isItalic())
style += Font.ITALIC;
} else {
if (font.isItalic())
style -= Font.ITALIC;
}
quote.setFont (new Font (font.getName(), style, 14));
}
//===========================================================
// Toggles the bold setting of the quote text.
//===========================================================
public void set_bold (boolean on)
{
Font font = quote.getFont();
int style = font.getStyle();
// Turn bold on or off
if (on) {
if (! font.isBold())
style += Font.BOLD;
} else {
if (font.isBold())
style -= Font.BOLD;
}
quote.setFont (new Font (font.getName(), style, 14));
}
}
class Quote2_GUI
{
private Quotes2 applet;
private Panel case_and_fonts = new Panel();
private Panel language = new Panel();
private Panel style = new Panel();
// To be placed in `case_and_fonts´
private Button uppercase = new Button ("Uppercase");
private Button lowercase = new Button ("Lowercase");
private Choice font_choice = new Choice();
// To be placed in `language´
private CheckboxGroup topic = new CheckboxGroup();
private Checkbox deutsch = new Checkbox ("Deutsch", topic, true);
private Checkbox english = new Checkbox ("English", topic, false);
private Checkbox svenska = new Checkbox ("Svenska", topic, false);
// To be placed in `style´
private Checkbox bold = new Checkbox ("Bold");
private Checkbox italic = new Checkbox ("Italic");
private Quote2_Action_Listener uppercase_listener;
private Quote2_Action_Listener lowercase_listener;
private Quote2_Item_Listener bold_listener;
private Quote2_Item_Listener italic_listener;
private Quote2_Item_Listener font_listener;
private Quote2_Item_Listener deutsch_listener;
private Quote2_Item_Listener english_listener;
private Quote2_Item_Listener svenska_listener;
//===========================================================
// Sets up the GUI by creating the necessary listeners.
//===========================================================
public Quote2_GUI (Quotes2 quote_applet)
{
applet = quote_applet;
uppercase_listener =
new Quote2_Action_Listener (applet, Quotes2.UPPERCASE);
lowercase_listener =
new Quote2_Action_Listener (applet, Quotes2.LOWERCASE);
bold_listener =
new Quote2_Item_Listener (applet, Quotes2.BOLD);
italic_listener =
new Quote2_Item_Listener (applet, Quotes2.ITALIC);
font_listener =
new Quote2_Item_Listener (applet, Quotes2.FONT);
deutsch_listener =
new Quote2_Item_Listener (applet, Quotes2.DEUTSCH);
english_listener =
new Quote2_Item_Listener (applet, Quotes2.ENGLISH);
svenska_listener =
new Quote2_Item_Listener (applet, Quotes2.SVENSKA);
}
//===========================================================
// Initializes the GUI by laying out the components and
// adding the appropriate listeners.
//===========================================================
public void init (Label quote)
{
// setup the component hierarchy
// prepare choice button for case_and_fonts panel
String[] font_list = Toolkit.getDefaultToolkit().getFontList();
// add available fonts to choice button
// => dynamic number of alternatives
for (int i = 0; i < font_list.length; i++)
font_choice.addItem (font_list[i]);
// font_choice.addItem ("Arial");
// font_choice.addItem ("Courier");
// font_choice.addItem ("TimesRoman");
// font_choice.addItem ("ZapfDingbats");
// set up case_and_fonts panel
case_and_fonts.setLayout (new GridLayout (4,1,3,3));
case_and_fonts.add (uppercase);
case_and_fonts.add (lowercase);
case_and_fonts.add (font_choice);
case_and_fonts.setBackground (Color.red);
// set up language panel
language.setLayout (new GridLayout (4,1));
language.add (deutsch);
language.add (english);
language.add (svenska);
language.setBackground (Color.yellow);
// set up style panel
style.setLayout (new GridLayout (4,1));
style.add (bold);
style.add (italic);
style.setBackground (Color.cyan);
// set up applet gui
applet.setLayout (new BorderLayout(10,2));
quote.setBackground (Color.green);
applet.add ("North", quote);
applet.add ("West", case_and_fonts);
applet.add ("Center", language);
applet.add ("East", style);
applet.resize (300,150);
// Add all associated listeners
uppercase.addActionListener (uppercase_listener);
lowercase.addActionListener (lowercase_listener);
font_choice.addItemListener (font_listener);
deutsch.addItemListener (deutsch_listener);
english.addItemListener (english_listener);
svenska.addItemListener (svenska_listener);
bold.addItemListener (bold_listener);
italic.addItemListener (italic_listener);
}
}
class Quote2_Item_Listener implements ItemListener
{
private Quotes2 applet;
private int command;
//===========================================================
// Sets up the listener by storing the applet and the
// command, as specified.
//===========================================================
public Quote2_Item_Listener
(Quotes2 listening_applet, int listening_command)
{
applet = listening_applet;
command = listening_command;
}
//===========================================================
// Responds to an item state change event by modifying
// the appropriate feature.
//===========================================================
public void itemStateChanged (ItemEvent event)
{
switch (command) {
case Quotes2.FONT:
applet.set_font ((String)(event.getItem()));
break;
case Quotes2.DEUTSCH:
applet.set_deutsch();
break;
case Quotes2.ENGLISH:
applet.set_english();
break;
case Quotes2.SVENSKA:
applet.set_svenska();
break;
case Quotes2.BOLD:
applet.set_bold
(event.getStateChange() == ItemEvent.SELECTED);
break;
case Quotes2.ITALIC:
applet.set_italics
(event.getStateChange() == ItemEvent.SELECTED);
break;
default:
System.out.println ("Illegal Item " + event.toString());
}
}
}
class Quote2_Action_Listener implements ActionListener
{
private Quotes2 applet;
private int command;
//===========================================================
// Sets up the listener by storing the applet and the
// command, as specified.
//===========================================================
public Quote2_Action_Listener
(Quotes2 listening_applet, int listening_command)
{
applet = listening_applet;
command = listening_command;
}
//===========================================================
// Responds to the action event by setting the appropriate
// case characteristic.
//===========================================================
public void actionPerformed (ActionEvent event)
{
switch (command) {
case Quotes2.UPPERCASE:
applet.set_uppercase();
break;
case Quotes2.LOWERCASE:
applet.set_lowercase();
break;
default:
System.out.println ("Illegal Action " + event.toString());
}
}
}