AGENDA DE TELEFONOS
Se crean dos ficheros .java
FileCardEditor.JAVA y FileCard.JAVA
El fichero FileCard.JAVA con el que
guardaremos los datos
class FileCard
{
String
name;
String
phoneNumber;
public FileCard(String n, String p)
{
name = n;
phoneNumber = p;
}
}
Un fichero es del tipo formulario:
FileCardEditor.JAVA y su cçodigo es el
siguiente:
import com.ms.wfc.app.*;
import com.ms.wfc.core.*;
import com.ms.wfc.ui.*;
import com.ms.wfc.html.*;
import com.ms.wfc.io.*;
import com.ms.wfc.util.*;
/**
* Esta clase puede tomar un nœmero variable
de par‡metros en la l’nea de
* de comandos. La ejecuci—n del programa comienza con el
mŽtodo main(). El
*
constructor de clase no se invoca a menos que se cree un objeto del tipo
*
'FileCardEditor' en el mŽtodo main().
*/
public class FileCardEditor extends
Form
{
//
Declarar una List
List
cardFile;
int currentIndex;
//
Declarar la referencia de archivo
File
phoneListFile;
final static String FILENAME = "MYLIST.PHONE";
public FileCardEditor()
{
super();
//
Necesario para el soporte de Visual J++ Form Designer
initForm();
//
Abrir el archivo y crear la matriz
phoneListFile = File.open(FILENAME);
//
TODO 3: Crear la List
int length = phoneListFile.readInt();
cardFile = new List(length, 10);
//
Llenar List con valores del archivo
int index = 0;
String
name, phoneNumber;
while(index < length)
{
//
Leer los valores del archivo
name = phoneListFile.readString();
phoneNumber =
phoneListFile.readString();
//
Crear un objeto FileCard y colocarlo en List
cardFile.addItem(new FileCard(name, phoneNumber));
index = index + 1;
}
//
Cerrar el archivo
phoneListFile.close();
currentIndex = 0;
setUI();
}
/**
* FileCardEditor omite el uso por lo que puede
limpiar la lista de
* componentes.
*/
public void dispose()
{
super.dispose();
components.dispose();
}
private void saveData()
{
//
Actualizar para utilizar List e ’ndice
FileCard
aCard;
aCard = (FileCard)cardFile.getItem(currentIndex);
aCard.name
= edtName.getText();
aCard.phoneNumber
= edtPhoneNumber.getText();
}
private void setUI()
{
//
Actualizar para utilizar List e ’ndice
FileCard
aCard;
aCard = (FileCard)cardFile.getItem(currentIndex);
edtName.setText(aCard.name);
edtPhoneNumber.setText(aCard.phoneNumber);
//
Cambiar para utilizar mŽtodos List
btnPrevious.setEnabled(currentIndex > 0);
btnNext.setEnabled(currentIndex + 1 <
cardFile.getSize());
}
private void btnPrevious_click(Object source, Event e)
{
//
Guardar los valores del formulario en la matriz
saveData();
//
Actualizar para utilizar la matriz
if(currentIndex != 0)
{
currentIndex = currentIndex - 1;
}
//
Actualizar los valores del formulario
setUI();
}
private void btnNext_click(Object source, Event e)
{
//
Guardar los valores del formulario en la matriz
saveData();
//
Actualizar para utilizar un mŽtodo List
if(currentIndex != cardFile.getSize() - 1)
{
currentIndex = currentIndex + 1;
}
//
Actualizar los valores del formulario
setUI();
}
private void FileCardEditor_closing(Object source,
CancelEvent e)
{
//
Actualizar la matriz con datos del formulario
saveData();
//
Crear el archivo para salida
phoneListFile = File.create(FILENAME);
//
Escribir la longitud de la lista
int length = cardFile.getSize();
phoneListFile.writeInt(length);
int index = 0;
FileCard
aCard;
while(index < length)
{
//
Escribir los valores individuales de FileCard
aCard = (FileCard)cardFile.getItem(index);
phoneListFile.writeString(aCard.name);
phoneListFile.writeString(aCard.phoneNumber);
index = index + 1;
}
//
Cerrar el archivo
phoneListFile.close();
}
private void btnAdd_click(Object source, Event e)
{
//
Guardar datos del formulario
saveData();
//
Agregar una ficha nueva
addNewCard();
}
//
MŽtodo para agregar una nueva FileCard
private void addNewCard()
{
//
Crear una FileCard en blanco
FileCard
aCard = new FileCard("", "");
//
Agregar la nueva FileCard a List
cardFile.addItem(aCard);
//
Ajustar currentIndex para acceder a la nueva FileCard
currentIndex = cardFile.findIndex(aCard);
//
Invocar setUI para actualizar la interfaz de usuario
setUI();
}
private void btnDelete_click(Object source, Event e)
{
//
Eliminar la ficha actual de List
cardFile.removeItem(currentIndex);
int length = cardFile.getSize();
//
Si est‡ vac’a la lista, agregar una FileCard en blanco
if(length == 0)
{
addNewCard();
}
//
Si pasa del final de List, ajustar currentIndex
else if(currentIndex == length)
{
currentIndex = currentIndex - 1;
}
//
Invocar setUI para actualizar la interfaz de usuario
setUI();
}
private void FileCardEditor_click(Object source, Event e)
{
}
/**
* NOTA: El siguiente c—digo es necesario para
el dise–ador de formularios
* de Visual J++.
Puede modificarse editor de formularios. No lo
* modifique utilizando el editor de c—digo.
*/
Container
components = new Container();
Label
label1 = new Label();
Edit
edtName = new Edit();
Label
label2 = new Label();
Edit
edtPhoneNumber = new Edit();
Button
btnPrevious = new Button();
Button
btnNext = new Button();
Button
btnAdd = new Button();
Button
btnDelete = new Button();
Button
btnSort = new Button();
private void initForm()
{
this.setText("FileCardEditor");
this.setAutoScaleBaseSize(new Point(5, 13));
this.setClientSize(new Point(366, 104));
this.addOnClick(new EventHandler(this.FileCardEditor_click));
this.addOnClosing(new
CancelEventHandler(this.FileCardEditor_closing));
label1.setLocation(new Point(8, 8));
label1.setSize(new Point(48, 23));
label1.setTabIndex(0);
label1.setTabStop(false);
label1.setText("&Nombre:");
edtName.setAnchor(ControlAnchor.TOPLEFTRIGHT);
edtName.setLocation(new Point(64, 8));
edtName.setSize(new Point(295, 20));
edtName.setTabIndex(1);
edtName.setText("");
label2.setLocation(new Point(8, 40));
label2.setSize(new Point(48, 23));
label2.setTabIndex(2);
label2.setTabStop(false);
label2.setText("&TelŽfono:");
edtPhoneNumber.setAnchor(ControlAnchor.TOPLEFTRIGHT);
edtPhoneNumber.setLocation(new Point(64, 40));
edtPhoneNumber.setSize(new Point(295, 20));
edtPhoneNumber.setTabIndex(3);
edtPhoneNumber.setText("");
btnPrevious.setLocation(new Point(8, 71));
btnPrevious.setSize(new Point(65, 23));
btnPrevious.setTabIndex(4);
btnPrevious.setText("Ante&rior");
btnPrevious.addOnClick(new
EventHandler(this.btnPrevious_click));
btnNext.setLocation(new Point(80, 71));
btnNext.setSize(new Point(65, 23));
btnNext.setTabIndex(5);
btnNext.setText("Siguie&nte");
btnNext.addOnClick(new EventHandler(this.btnNext_click));
btnAdd.setLocation(new Point(152, 72));
btnAdd.setSize(new Point(65, 23));
btnAdd.setTabIndex(6);
btnAdd.setText("&Agregar");
btnAdd.addOnClick(new EventHandler(this.btnAdd_click));
btnDelete.setLocation(new Point(224, 72));
btnDelete.setSize(new Point(65, 23));
btnDelete.setTabIndex(8);
btnDelete.setText("&Eliminar");
btnDelete.addOnClick(new
EventHandler(this.btnDelete_click));
btnSort.setLocation(new Point(296, 72));
btnSort.setSize(new Point(65, 23));
btnSort.setTabIndex(7);
btnSort.setText("&Corto");
this.setNewControls(new Control[] {
btnSort,
btnDelete,
btnAdd,
btnNext,
btnPrevious,
edtPhoneNumber,
label2,
edtName,
label1});
}
/**
* Punto de entrada principal para la
aplicaci—n.
*
* @param args Matriz
de par‡metros pasados a la aplicaci—n
* mediante la l’nea
de comandos.
*/
public static void main(String args[])
{
Application.run(new FileCardEditor());
}
}