Computer Graphics

Lecture 8b - AWT Components

Components

Class

  Description

Button

A labeled button

TextField

A single editable line

Label

A component for placing text

TextArea

A multiline area for displayingtext

Checkbox

A graphical component thathas true/false state

CheckboxGroup

A graphics componentwhich works like radio buttons

Choice 

A class used to present a pop-upmenu of choices

List

Used to design a scrolling listof text items

Canvas

A component used for paintinggraphics

Scroll pane

Containers with scrollbars

Scroll bars

Scroll bars to input values

Component methods

Method name

Arguments

Description

setBounds(x,y,w,h)

x,y,w,h - integers 

Component will be placed at (x,y)(pixels). Component's width will be w, height h (pixels).

setLocation(x,y)

x,y - integers 

Component will be placed at (x,y) (pixels).

setSize(w,h)

w,h - integers 

Component's width will be w, height h (pixels).

setVisible(b)

b - true or false 

Component is visible if b is true; invisible otherwise.

isVisible()

None

Returns true if the component is visible.

To use setBounds(), setLocation() and setSize(), you must declare setLayout(null).
 

Changing fonts and colors of components

componentobject.setBackground(color_object)

Color.black 

Color.blue

Color.cyan

Color.darkGray 

Color.gray 

Color.green

Color.lightGray

Color.magenta 

Color.orange

Color.pink 

Color.red

Color.white

Color.yellow

 

 


Color mycolor_object = new Color(R,G,B);

  setForeground() of the Component class is used to change the foreground color of the component. componentobject.setForeground(color_object)

componentobject.setFont(font_name,font_style,size)

Example - ColoredButtons


import java.awt.*;
import java.applet.*;

public class ColoredButtons extends Applet{

public void init(){

Button b1 = new Button("one");
b1.setFont(new Font("Helvetica",Font.BOLD,12));
b1.setBackground(Color.magenta);
b1.setForeground(Color.yellow);
Button b2 = new Button("two");
b2.setFont(new Font("TimesRoman",Font.ITALIC,12));
b2.setBackground(Color.blue);
Button b3 = new Button("three");
b3.setFont(new Font("Dialog",Font.BOLD+Font.ITALIC,12));
b3.setBackground(Color.green);
Button b4 = new Button("four");
b4.setFont(new Font("Courier",1,12));
b4.setBackground(Color.pink);
Panel p1 = new Panel();
p1.setLayout(new GridLayout(2,2,15,15));
p1.setBackground(Color.red);
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
add(p1);

}

}
 

The Canvas Component

Example - Creates a canvas and places it a particular location on screen


import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class CanvasExample1 extends Applet implements ActionListener{

    Button button = new Button("click");
    Canvas myCanvas = new Canvas();
    TextField t1 = new TextField(20);

    public void init(){

setLayout(null);
myCanvas.setSize(100,100);
myCanvas.setBackground(Color.magenta);
myCanvas.setLocation(100,200);
t1.setSize(100,50);
t1.setBackground(Color.green);
t1.setLocation(100,5);
button.setSize(50,50);
button.setBackground(Color.red);
button.setLocation(5,110);
add(t1);
add(myCanvas);
add(button);
button.addActionListener(this);

    }

    public void actionPerformed(ActionEvent event){

    Graphics g = myCanvas.getGraphics();
    g.drawString("NEW YORK",10,10);
    Graphics g1 = getGraphics();
    t1.setText("You clicked...");

    }
}

Example - Component (canvas) is hidden and then displayed


import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class CanvasExample2 extends Applet implements ActionListener{

Button button = new Button("click");
Canvas myCanvas = new Canvas();
TextField t1 = new TextField(20);

public void init(){

setLayout(null);
myCanvas.setSize(100,100);
myCanvas.setBackground(Color.magenta);
myCanvas.setLocation(100,200);
t1.setSize(100,50);
t1.setBackground(Color.green);
t1.setLocation(100,5);
button.setSize(50,50);
button.setBackground(Color.red);
button.setLocation(5,110);
add(t1);
add(myCanvas);
myCanvas.setVisible(false);

add(button);
button.addActionListener(this);

}

public void actionPerformed(ActionEvent event){

if (myCanvas.isShowing())
    myCanvas.setVisible(false);
else
    myCanvas.setVisible(true);

t1.setText("You clicked...");

}

}

Example


//The following example extends the Canvas class and writes to it.

import java.awt.*;
import java.applet.*;

public class CanvasExample3 extends Applet{

    public void init(){

myCanvas can1 = new myCanvas();
can1.setSize(200,100);
can1.setBackground(Color.blue);
add(can1);
repaint();

}

}

class myCanvas extends Canvas{

    public void paint(Graphics g){
        g.setColor(Color.cyan);
        g.drawString("New York... Westchester",10,10);
    }
}
 

The Panel Class

The Container Class

add(component)

The Applet Class

The Scrollpane Class

Field 

Type

SCROLLBARS_ALWAYS

static final int

SCROLLBARS_AS_NEEDED

static final int

SCROLLBARS_NEVER

static final int

Constructors:

Constructor

Arguments

Description

ScrollPane()

None 

Creates scroll pane with scroll bars as needed.

ScrollPane(x)

x - int one of the three fields

Creates a scroll panewith the specified scroll bar display policy

.
Methods:

Method 

Arguments 

Description

getViewportSize() 

None 

Returns dimensions (Dimension) of the viewport.

Example - Displays a text field in a ScrollPane


import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class ScrollPane1 extends Applet{

    ScrollPane scrBar1;
    TextField text1;
    TextField text2;

    public void init(){

    scrBar1 = new ScrollPane();
    text1 = new TextField("New York, . . . . . . . . . . Westchester");
    text2 = new TextField("Pace University, . . . . . . . . . ,NY");
    scrBar1.add(text1);
    add(text2);
    add(scrBar1);
}

    public void paint(Graphics g){
        Dimension d = scrBar1.getViewportSize();
        g.drawString("height is = "+ d.height+" width is = "+d.width,200,200);
    }
}

The Checkbox Class

Constructor 

Arguments 

Description

Checkbox() 

None 

Creates a checkbox with no labels

Checkbox(str) 

str - String 

Creates a checkbox with label str

Method

Description

getLabel()

Returns the label (String) (null, if no label)

getState() 

Returns true if the check box is checked; otherwise returns false

Example - Displays check boxes for programming languages and asks the user to select all languages he/she knows


import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class CheckBoxes extends Applet implements ActionListener{
    int total;
    TextField result = new TextField(40);
    Button button = new Button("Submit");
    Checkbox Pascal = new Checkbox("Pascal");
    Checkbox FORTRAN = new Checkbox("FORTRAN");
    Checkbox C = new Checkbox("C");
    Checkbox CPLUS = new Checkbox("CPLUS");
    Checkbox LISP = new Checkbox("LISP");
    Checkbox ADA = new Checkbox("ADA");
    Checkbox Java = new Checkbox("Java");
    Checkbox cobol = new Checkbox("COBOL");
    Panel panel = new Panel();

    public void init(){
        button.addActionListener(this);
        add( new Label("Click all computer programming languages you know:",Label.CENTER));
        panel.setLayout(new GridLayout(2,4,15,15));
        panel.add(Pascal);
        panel.add(FORTRAN);
        panel.add(C); panel.add(CPLUS);
        panel.add(LISP); panel.add(ADA);
        panel.add(Java); panel.add(cobol);
        add(panel); add(button); add(result);
    }

    public void actionPerformed(ActionEvent event){
        total = 0;
        if(Pascal.getState()) total++;
        if(FORTRAN.getState()) total++;
        if(C.getState()) total++;
        if(CPLUS.getState()) total++;
        if(LISP.getState()) total++;
        if(ADA.getState()) total++;
        if(Java.getState()) total++;
        if(cobol.getState()) total++;
        result.setText("You know "+total+" computer programming languages");
    }
}
 

Check Box Group


Creates a new CheckboxGroup.


Returns the label of the check box in this check box group that is currently "on"

if all are off returns NULL.

CheckboxGroup groupname = new CheckboxGroup();

Checkbox boxname = new Checkbox("label", groupname, false);

Example - Check boxes for programming languages. User asked to check his/her strongest language


Choice Menus

Choice();

Creates a new choice menu.

Method 

Argument 

Description

addItem(item)

item - String 

adds item to menu

getItemCount() 

None

returns the numberof items (int) in the menu

getItem(index)

index - int

returns theitem at index in the menu

getSelectedIndex() 

None

returns theindex (int) of the selected item

getSelectedItem() 

None

returns the selected item (String).

Example - Choice Menu



import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class ChoiceMenu extends Applet implements ActionListener {
       Button button = new Button("Submit");
       TextField result = new TextField(50);
       Choice languageMenu = new Choice();
       String str= " ";

public void init(){
      button.addActionListener(this);
      add( new Label("Select your strongest programming
      language:",Label.CENTER));
      languageMenu.addItem("Pascal");
      languageMenu.addItem("FORTRAN");
      languageMenu.addItem("C");
      languageMenu.addItem("CPLUS");
      languageMenu.addItem("LISP");
      languageMenu.addItem("ADA");
      languageMenu.addItem("Java");
      languageMenu.addItem("COBOL");
      languageMenu.addItem("Perl");
      languageMenu.addItem("PL1");
      languageMenu.addItem("RPG");
      languageMenu.addItem("BASIC");
      languageMenu.addItem("JavaScript");
      languageMenu.addItem("VBScript");
      languageMenu.addItem("ActiveX");
      add(languageMenu);
      add(button);
      add(result);
}
public void actionPerformed(ActionEvent event){
      str = "number of items ="+languageMenu.getItemCount();
      str = str + "   item selected =
      "+languageMenu.getSelectedItem();
      str = str + "   index of item = " +
      languageMenu.getSelectedIndex();
      result.setText(str);
}

}
 

List Boxes

List(rows,true)

Method 

Argument 

Description

add(item) 

item - String

Adds item tothe list

getItemCount() 

None

Returns the number(int) of items in the list

getItem(index) 

index - int 

Returnsthe item (String) at position index

getSelectedIndex()

None

Returns theindex (int) of selected item.

getSelectedItem()

None

Returns selecteditem (String).

getSelectedIndexes() 

None

Returns anarray (int) of the index values of selected items.

GetSelectedItems() 

None

Returns an array(String) of selected items.

Example -  Menu List


import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class menuList1 extends Applet implements ActionListener {

Button button = new Button("Submit");
TextArea result = new TextArea(15,40);
List languageList = new List(5,true);

public void init(){

button.addActionListener(this);
add( new Label("Select all programming languages you know:",Label.CENTER));
languageList.addItem("Pascal");languageList.addItem("FORTRAN");
languageList.addItem("C"); languageList.addItem("CPLUS");
languageList.addItem("LISP"); languageList.addItem("ADA");
languageList.addItem("Java"); languageList.addItem("COBOL");
languageList.addItem("Perl"); languageList.addItem("PL1");
languageList.addItem("RPG"); languageList.addItem("BASIC");
languageList.addItem("JavaScript");
languageList.addItem("VBScript");
languageList.addItem("ActiveX");
add(languageList); add(button); add(result);

}
public void actionPerformed(ActionEvent event){

int count = languageList.getItemCount();
String out = "Number of items on the list is = "+count+"\nYOU HAVE SELECTED ...\n";
String str[] = languageList.getSelectedItems();
int i = 0;
while(i < str.length ){
    out=out +"\n"+ str[i];
    i++;
}

    result.setText(out);
}

}
 

The TextArea Class

Field name 

Meaning

SCROLLBARS_BOTH 

Both horizontal and vertical scroll bars present.

SCROLLBARS_VERTICAL_ONLY

Only vertical scroll bar present.

SCROLLBARS_HORIZONTAL_ONLY 

Only horizontal scroll bar present.

SCROLLBARS_NONE 

No scroll bars present.

Constructor

 Arguments

Meaning

TextArea()

None

Constructs a new text area.

TextArea(r,c) 

r and c - int 

Constructs a new text area with r rowsand c columns.

TextArea(str) 

str - String 

Constructs a new text area with text str.

TextArea(str,r) 

str - String
r and c - int 

Constructs a new text area with r rows, c columns, and text str.

TextArea(str, r,c,b)

str – String,
r,c,b - int 

Constructs a new text areawith text str r rows, c columns, and b is one of the static fields.

Method

Arguments

Description

getText()

None 

Returns the string (String) from the text area.

setText(str) 

str - String 

Sets the str in the field.

replaceRange( str ,n ,m)

str – String
n,m - int 

Replaces string from position n through m by str.

insert(str, n) 

str – String 
n - int

Inserts str at position n.

append(str) 

str - String

Appends str to the text in the text area.

Example


import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class TextArea1 extends Applet implements ActionListener{

    String s1 = "\nThank you for giving your input";
    String s2 = "Pace University,New York and Westchester";
    TextArea ta = new TextArea(s2,20,35);
    Button button = new Button("THANK YOU");

    public void init(){

        ta.setBackground(Color.green);
        button.setBackground(Color.red);
        add(ta);
        add(button);
        button.addActionListener(this);
    }

    public void actionPerformed(ActionEvent event){
        ta.append(s1);
    }
}
 

The Label Class

Field name

Number 

Meaning

CENTER 

1

Indicates that the labelshould be centered

LEFT 

0

Indicates that the label shouldbe left justified

RIGHT

2

Indicates that the label shouldbe right justified

Constructor 

Arguments 

Description

Label() 

None

Constructs an empty label

Label(str

str – String 

Constructs a label with str

Label(str, n

str - String, 
n - int 0, 1, or 2 
or Label.LEFT, 
Label.CENTER ,or Label.RIGHT

Construct a label with str, with specified alignment.

Method

Argument 

Meaning

setText(str) 

str – String 

Sets the label with specified string

getText() 

None 

Returns the label string (String)

getAlignment() 

None 

Returns (int) the alignment (0, 1, or 2)

setAlignment(n) 

n – int 

Sets the label with the specified alignment

Example - Puts out three labels  in three alignments


import java.awt.*;
import java.applet.*;

public class Labels1 extends Applet{

    public void init(){

        Label label1,label2, label3;
        label1 = new Label("left label",0);
        label2 = new Label("center label",1);
        label3 = new Label("right label",2);
        label1.setBackground(Color.green);
        label2.setBackground(Color.blue);
        label3.setBackground(Color.magenta);

        add(label1);
        add(label2);
        add(label3);
        add(new Label("Another label"));
    }
}
 

Example - Displays two buttons and one label. When the user presses a button, the label changes



import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Labels2 extends Applet implements ActionListener{

    Label label = new Label("Pace university");
    Button button1 = new Button("New York");
    Button button2 = new Button("Westchester");

    public void init(){

        button1.setBackground(Color.cyan);
        button2.setBackground(Color.yellow);

        add(label);
        add(button1);
        add(button2);
        button1.addActionListener(this);
        button2.addActionListener(this);
    }

    public void actionPerformed(ActionEvent event){

    if(event.getSource() == button1) label.setText("New York");
    if(event.getSource() == button2) label.setText("Westchester");
    }
}
 

Scrollbars and Sliders


Scrollbar(alignment, initvalue, visible, minimum, maximum)


Scrollbar.VERTICAL (1)
Scrollbar.HORIZONTAL (0)

Method name

Arguments 

Description

getMaximum()

--- 

Returns (int) the maximum value of the scroll bar.

getMinimum()

--- 

Returns (int) the minimum value of the scroll bar.

getOrientation()

---

Returns (int) the orientation of the scroll bar (0-horizontal, 1 – vertical).

getValue()

--- 

Returns (int) the current value of the scroll bar.

Events generated by scroll bar:


Step 1: Include the following import statement:
              import java.awt.event.*;

Step 2: Include the interface AdjustmentListener:
        public class name extends Applet implements AdjustmentListener{
 }

Step 3: Register the scroll bar object as the event source:

  scroll_bar_object.addAdjustmentListener(this);


Step 4: Define the AdjustmentListener (interface) method adjustmentValueChanged():
       public void adjustmentValueChanged(AdjustmentEvent e){
       }

Method name 

Description

getAdjustable()

Returns the scroll bar object

getValue()

Returns the current value of the scroll bar

Example - Scrollbars select RGB components of color


import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Scrollbar1 extends Applet implements AdjustmentListener{

TextField box;
String string;
Scrollbar sbr,sbg,sbb;
Canvas canvas;
int r=0,g=0,b=0;

public void init(){

box = new TextField();
sbr = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
sbg = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
sbb = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
canvas = new Canvas();
sbr.addAdjustmentListener(this);
sbg.addAdjustmentListener(this);
sbb.addAdjustmentListener(this);
setLayout(null);
add(canvas);
add(sbr);
add(sbg);
add(sbb);
add(box);
sbr.setBounds(40,250,200,15);
sbg.setBounds(40,270,200,15);
sbb.setBounds(40,290,200,15);
canvas.setBounds(40,10,200,200);
box.setBounds(40,230,200,25);

 }
public void adjustmentValueChanged(AdjustmentEvent evt){

if(evt.getAdjustable() == sbr) r = sbr.getValue();
if(evt.getAdjustable() == sbg) g = sbg.getValue();
if(evt.getAdjustable() == sbb) b = sbb.getValue();
Color color = new Color(r,g,b);
canvas.setBackground(color);
string = "R = "+r+" G = "+g+" B = "+b;
box.setText(string);

}

}