/**
This example shows how to build buttons inside a Layout . There are three
buttons to click to have their corresponding rresults in a text field.
The steps:
1. import applet for applets and awt for graphics.
2. build a class ThisAction inside the class NumbersStrings. The first
inherits (extends) from Applet class. The second inside implements fron
ActionListener class which contains then the actionPerformed method.
3. Declare the components: Buttons and textfield
4. Initialization of :
- The Layout (size, etc ..)
- The components (buttons and textfield):
-- Instantion,
-- location, size, color, etc ...
-- add (NAME);
5. Make the buttons to listen: NAME.addActionlistener(OneAction);
*/
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/*
For JPanel
import javax.swing.JPanel;
import javax.swing.*;
And replace
Applet, Button, Frame, Panel by: JApplet, JButton, JFrame, JPanel
*/
public class NumbersStrings extends Applet
//The Buttons class inherite fron the Applet Class.
{
//private final static long serialVersionUID = 42L;// For the compiler
//Declare components
final int TheNumber = 10;
Button Fibonacci, Factorial, Sum, QuitButton;
//Button is predefined
TextField TheResult; //TextField is predefined
String TheString;
int int1;
//Let's declare some light colors( not predefined):
Color lightBlue = new Color(185,185,255);
Color lightGray = new Color(200,200,200);
Color lightRed = new Color(248,200,200);
//And some fonts:
Font f1 = new Font("Arial", Font.BOLD, 13);
Font f2 = new Font("Courier New", Font.BOLD, 15);
/*
Apply colors and fonts on an object:
- TheObject.setFont(f1); and
- TheObject.setBackground(lightBlue); or
- TheObject.setForeground(Color.red); //Predefined
*/
public void init(){
setLayout(null);
setSize(500, 300);
setVisible(true);
// Add components
TheResult = new TextField();
TheResult.setEditable(false);
TheResult.setLocation(70, 50);
TheResult.setSize(120,35);
add (TheResult);
TheResult.setForeground(Color.red);
TheResult.setFont(f1);
Fibonacci = new Button("Fibonacci of " + TheNumber);
Fibonacci.setLocation(80, 100);
Fibonacci.setSize( 100,40);
Fibonacci.setForeground(Color.green);
add (Fibonacci);
Factorial = new Button("Factorial of " + TheNumber);
Factorial.setLocation(80, 150);
Factorial.setSize( 100,40);
Factorial.setForeground(Color.green);
add (Factorial);
Factorial.setForeground(Color.blue);//Predefined
Factorial.setBackground(lightBlue);
Sum = new Button("Sum of " + TheNumber);
Sum.setLocation(80, 200);
Sum.setSize( 100,40);
Sum.setForeground(Color.blue);
add (Sum);
Sum.setFont(f2);
Sum.setBackground(lightGray);
QuitButton = new Button("Quit");
QuitButton.setLocation(80, 250);
QuitButton.setSize(100,40);
QuitButton.setForeground(Color.green);
add (QuitButton);
QuitButton.setBackground(lightRed);
// Make Listener
ThisAction OneAction = new ThisAction();
Fibonacci.addActionListener(OneAction);
Factorial.addActionListener(OneAction);
Sum.addActionListener(OneAction);
QuitButton.addActionListener(OneAction);
}
//Definition of the Actionlistner's class ThisAction
public class ThisAction implements ActionListener {
public void actionPerformed(ActionEvent evt ){
Object obj = evt.getSource();
if (obj == Fibonacci)
{
int1 = Calculation(Fibonacci);
String TheString = new String(int1 + "");
TheResult.setText(TheString);
}
else
if (obj == Factorial)
{
int1 = Calculation(Factorial);
String TheString = new String(int1 + "");
TheResult.setText(TheString);
}
else
if ( obj == Sum)
{
int1 = Calculation(Sum);
String TheString = new String(int1 + "");
TheResult.setText(TheString);
}
else
if ( obj == QuitButton){
Fibonacci.setEnabled(false);
Factorial.setEnabled(false);
Sum.setEnabled(false);
QuitButton.setEnabled(false);
}
}
}
private int Calculation(Object arg)
{
if (Fibonacci.equals(arg)) int1 = Fibonacci(TheNumber);
else if (Factorial.equals(arg)) int1 = Factorial(TheNumber);
else if (Sum.equals(arg)) int1 = Sum(TheNumber);
else if (QuitButton.equals(arg)) {
System.exit(0);// Equivalent to Runtime.getRuntime().exit(0);
}
return int1;
}
private int Fibonacci(int m)
{
if (m <= 2) return m;
else
return Fibonacci(m-1) + Fibonacci(m-2);
}
private int Factorial(int m)
{
if (m <= 1) return m;
else
return m * Factorial(m - 1);
}
private int Sum(int m)
{
return m * (m+1) /2;
}
public static void main (String[] args) {}
}
|