Swing, Buttons listeners


/**
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)	{}
}


	

© The Scientific Sentence. 2007