OOP Lec15 (Windows Forms)
OOP Lec15 (Windows Forms)
OOP Lec15 (Windows Forms)
Lecture # 15
Outline
More AWT Controls
Choice Control
Textfield
2
Choice Controls
The Choice class is used to create a pop-up list
of items from which the user may choose
Each item in the list is a String that appears as
a left-justified label in the order it is added to
the Choice object
Choice only defines the default constructor,
which creates an empty list
3
Choice Controls
To add a selection to the list, call addItem() or add()
– void addItem(String name)
– void add(String name)
To determine which item is currently selected, we may
call either getSelectedItem() or getSelectedIndex()
– String getSelectedItem()
– int getSelectedIndex()
The first item is at index 0
By default, the first item added to the list is selected
4
Choice Controls
To obtain the number of items in the list, call
getItemCount()
– int getItemCount()
We can set the currently selected item using the select()
method with a zero-based integer index or a string that
will match a name in the list
– void select(int index)
– void select(String name)
Given an index, we can obtain the name associated with
the item at that index by calling getItem(), which has
the general form:
– String getItem(int index)
5
Choice Controls
Each time a choice is selected, an item event is
generated
Each listener implements the ItemListener
interface
That interface defines the
itemStateChanged() method
An ItemEvent object is supplied as the
argument to this method
6
Choice Controls
// Demonstrate Choice List
import java.awt.*;
import java.awt.event.*;
class MyChoiceList extends Frame implements ItemListener {
Panel panel;
Label label;
String msg="";
Choice os, browser;
MyChoiceList() {
addWindowListener(new MyWindowAdapter());
label = new Label();
os = new Choice();
browser = new Choice();
panel = new Panel();
7
Choice Controls
// add items to os list
os.add("Windows 98");
os.add("Windows NT/2000");
os.add("Solaris");
os.add("MacOS");
// add items to browser list
browser.add("Netscape 1.1");
browser.add("Netscape 2.x");
browser.add("Netscape 3.x");
browser.add("Netscape 4.x");
browser.add("Internet Explorer 3.0");
browser.add("Internet Explorer 4.0");
browser.add("Internet Explorer 5.0");
browser.add("Lynx 2.4");
8
Choice Controls
browser.select("Netscape 4.x");
os.addItemListener(this);
browser.addItemListener(this);
panel.add(os);
panel.add(browser);
panel.add(label);
add(panel);
}
public void itemStateChanged(ItemEvent ie)
{
repaint();
}
9
Choice Controls
public void paint(Graphics g)
{
msg = "Current OS: ";
msg += os.getSelectedItem();
msg += "Current Browser: ";
msg += browser.getSelectedItem();
label.setText(msg);
}
}
10
Choice Controls
public class MyChoiceListDemo {
public static void main(String args[]) {
MyChoiceList win=new MyChoiceList();
win.setSize(380,120);
win.setTitle("Choice List");
win.setVisible(true);
}
}
class MyWindowAdapter extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
11
Using a TextField
The TextField class implements a single-line text-
entry area
Text fields allow the user to enter strings and to edit the
text using the arrow keys, cut and paste keys, and
mouse selections
TextField is a subclass of TextComponent
TextField defines the following constructors:
– TextField()
– TextField(int numChars)
– TextField(String str)
– TextField(String str, int numChars)
12
Using a TextField
TextField (and its superclass TextComponent)
provides several methods that allow us to utilize a text
field
To obtain the string currently contained in the text field,
call
– String getText()
To set the text, call
– void setText(String str)
13
Using a TextField
The user can select a portion of the text in a text field
We can also select a portion of text under program
control by using
– void select(int startIndex, int endIndex)
The select() method selects the characters beginning at
startIndex and ending at endIndex-1
Program can obtain the currently selected text by calling
– String getSelectedText()
14
Using a TextField
There may be times when we will want the user to enter
text that is not displayed, such as a password
We can disable the echoing of the characters as they are
typed by calling
– void setEchoChar(char ch)
This method specifies a single character that the
TextField will display when characters are entered (thus,
the actual characters typed will not be shown)
15
Using a TextField
Program generally will not respond to individual
key events that occur within a text field
However, we may want to respond when the
user presses Enter key
When this occurs, an action event is generated
16
Using a TextField
// Demonstrate TextField
import java.awt.*;
import java.awt.event.*;
class MyTextField extends Frame implements ActionListener {
Panel panel;
Label label, nlabel, plabel;
String msg="";
TextField name, pass;
MyTextField()
{
addWindowListener(new MyWindowAdapter());
label = new Label();
nlabel = new Label("Name: ",Label.RIGHT);
plabel = new Label("Password: ",Label.RIGHT);
17
Using a TextField
name = new TextField(12);
pass = new TextField(8);
pass.setEchoChar('*');
panel = new Panel();
name.addActionListener(this);
pass.addActionListener(this);
panel.add(nlabel);
panel.add(name);
panel.add(plabel);
panel.add(pass);
panel.add(label);
add(panel);
}
18
Using a TextField
public void actionPerformed(ActionEvent ae)
{
repaint();
}
public void paint(Graphics g)
{
msg = "Name: " + name.getText();
msg += "Selected Text in name: " + name.getSelectedText();
msg += "Password: " + pass.getText();
label.setText(msg);
}
}
19
Using a TextField
public class MyTextFieldDemo {
public static void main(String args[]) {
MyTextField win=new MyTextField();
win.setSize(380,120);
win.setTitle("TextField");
win.setVisible(true);
}
}
class MyWindowAdapter extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
20
Recommended Reading
Chapter # 24: Using AWT Controls, Layout
Managers, and Menus from Herbert Schildt,
Java: The Complete Reference, J2SETM 5 Edition
21