[color=darkred] [/color]
Duas agendas, uma para compromissos pessoais e outra para
compromissos profissionais. Deve haver uma escolha no Midlet
para qual agenda o usuário deseja acessar
sim…nao entendi…vc ta usnado o netbeans?
se sim entao vc tem que clicar nas propriedades do projeto e definir outra Midlet e assim por diante…ou fazer uma midlet que chame as outras…tipo uma aplicação que tenha menu para “subaplicações”…é isso?
se nao…explica melhor essa sua duvida…espero ter ajudado
[quote=abelgomes]sim…nao entendi…vc ta usnado o netbeans?
se sim entao vc tem que clicar nas propriedades do projeto e definir outra Midlet e assim por diante…ou fazer uma midlet que chame as outras…tipo uma aplicação que tenha menu para “subaplicações”…é isso?
se nao…explica melhor essa sua duvida…espero ter ajudado ;)[/quote]
O código é este:
import javax.microedition.midlet.;
import javax.microedition.lcdui.;
import javax.microedition.rms.*;
import java.util.*;
public class RmsAgenda extends MIDlet implements CommandListener
{
Command addCmd = new Command(“Novo Contato”, Command.SCREEN, 1);
Command selectCmd = new Command(“Visualizar”, Command.ITEM, 1);
Command exitCmd = new Command(“Sair”, Command.EXIT, 1);
Command saveCmd = new Command("Salvar", Command.SCREEN, 1);
Command deleteCmd = new Command("Remover", Command.SCREEN, 1);
Command cancelCmd = new Command("Cancelar", Command.SCREEN, 1);
Command searchCmd = new Command("Buscar", Command.SCREEN, 1);
List list = new List("Contatos", List.IMPLICIT);
EditForm form = new EditForm();
SearchForm searchForm = new SearchForm();
NameComparator orderby = new NameComparator();
NameFilter nameFilter = new NameFilter(orderby);
private Contact[] currentContactList;
public RmsAgenda()
{
form.addCommand(saveCmd);
form.addCommand(cancelCmd);
form.addCommand(deleteCmd);
form.setCommandListener(this);
searchForm.addCommand(searchCmd);
searchForm.setCommandListener(this);
list.addCommand(searchCmd);
list.addCommand(addCmd);
list.addCommand(exitCmd);
list.setSelectCommand(selectCmd);
list.setCommandListener(this);
}
public void startApp()
{
refreshList();
}
public void pauseApp()
{
}
public void destroyApp(boolean unc)
{
}
private void refreshList()
{
list.deleteAll();
currentContactList = Contact.list(orderby, nameFilter);
for(int ccnt=0; ccnt < currentContactList.length; ccnt++)
{
String name = currentContactList[ccnt].firstName;
list.append(name + " "+currentContactList[ccnt].phoneNumber, null);
}
Display.getDisplay(this).setCurrent(list);
}
private void showForm(Contact c)
{
form.setContact(c);
Display.getDisplay(this).setCurrent(form);
}
public void commandAction(Command cmd, Displayable d)
{
if (cmd == exitCmd)
{
destroyApp(true);
notifyDestroyed();
}
else if ((d == list) && (cmd == addCmd))
{
form.setContact(new Contact());
Display.getDisplay(this).setCurrent(form);
}
else if ((d == form) && (cmd == saveCmd))
{
Contact c = form.getContact();
c.store();
refreshList();
}
else if ((d == list) && (cmd == selectCmd))
{
showForm(currentContactList[list.getSelectedIndex()]);
}
else if ((d == form) && (cmd == deleteCmd))
{
form.getContact().delete();
refreshList();
}
else if ((d == form) && (cmd == deleteCmd))
{
refreshList();
}
else if ((d == list) && (cmd == searchCmd))
{
Display.getDisplay(this).setCurrent(searchForm);
}
else if ((d == searchForm) && (cmd == searchCmd))
{
nameFilter.criteria = searchForm.getCriteria();
refreshList();
} else if ((d == form) && (cmd == cancelCmd))
{
refreshList();
}
}
}
class NameFilter implements RecordFilter
{
String criteria;
NameComparator orderby;
NameFilter(NameComparator orderby)
{
this.orderby = orderby;
}
public boolean matches(byte[] candidate)
{
if ((criteria == null) || (criteria.length() == 0))
{
return true;
}
else
return new Contact(candidate).firstName.startsWith(criteria);
}
}
class NameComparator implements RecordComparator
{
public int compare(byte[] rec1, byte[] rec2)
{
Contact c1 = new Contact(rec1);
Contact c2 = new Contact(rec2);
String s1 = c1.firstName;
String s2 = c2.firstName;
if (s1.compareTo(s2) == 0)
{
return RecordComparator.EQUIVALENT;
}
else if (s1.compareTo(s2) > 0)
{
System.out.println(c1+ " then " + c2);
return RecordComparator.FOLLOWS;
}
else
{
System.out.println(c2+ " then " + c1);
return RecordComparator.PRECEDES;
}
}
}
class ChangeNotifier implements RecordListener
{
public void recordAdded(RecordStore recordStore, int recordId){
try {
System.out.println("Added a record to “+recordStore.getName() + " id=”+recordId);
} catch (RecordStoreNotOpenException x) {
x.printStackTrace();
}
}
public void recordChanged(RecordStore recordStore, int recordId){
try {
System.out.println("Changed a record in "+recordStore.getName() + " id="+recordId);
} catch (RecordStoreNotOpenException x) {
x.printStackTrace();
}
}
public void recordDeleted(RecordStore recordStore, int recordId){
try {
System.out.println("Deleted record from "+recordStore.getName() + " id="+recordId);
} catch (RecordStoreNotOpenException x) {
x.printStackTrace();
}
}
}
class SearchForm extends Form
{
private TextField searchField = new TextField("Buscar: ", “”, 15, TextField.ANY);
public SearchForm()
{
super("Criterio de Busca");
append(searchField);
}
public String getCriteria()
{
return searchField.getString();
}
}
class EditForm extends Form
{
private Contact contact;
private TextField firstNameFld = new TextField("Nome: ", “”, 15, TextField.ANY);
private TextField lastNameFld = new TextField("Sobrenome: ", “”, 15, TextField.ANY);
private TextField phoneFld = new TextField("Telefone: ", “”, 10, TextField.PHONENUMBER);
public EditForm()
{
super("Editar Contato");
append(firstNameFld);
append(lastNameFld);
append(phoneFld);
}
public void setContact(Contact c)//envia para a classe conta
{
contact = c;
firstNameFld.setString(contact.firstName);
lastNameFld.setString(contact.lastName);
phoneFld.setString(contact.phoneNumber);
}
public Contact getContact()//atribui para a classe conta
{
contact.firstName = firstNameFld.getString();
contact.lastName = lastNameFld.getString();
contact.phoneNumber = phoneFld.getString();
return contact;
}
}
class Contact//cria o arquivo,le,
{
private static final String storeName = “AgendaDB”;
String firstName;
String lastName;
String phoneNumber;
private int id = -1;//uma variavel para armazenar a
//posição,ou seja, na hora de ler o registro
public Contact()
{
id = -1;
}
public Contact(int id)
{
this.id = id;
}
public Contact(byte[] data)//cria um registro por dados em bytes
{
populate(data);
}
public static Contact[] list(RecordComparator orderby, RecordFilter nameFilter)
{
Vector v = new Vector();
try
{
RecordStore rs = RecordStore.openRecordStore(storeName, true);
RecordEnumeration e = rs.enumerateRecords(nameFilter, orderby, false);
while (e.hasNextElement())
{
int id = e.nextRecordId();
Contact c = new Contact(id);
c.populate(rs.getRecord(id));
v.addElement(c);
}
rs.closeRecordStore();
} catch (RecordStoreException x)
{
x.printStackTrace();
return null;
}
Contact[] rtn = new Contact[v.size()];
v.copyInto(rtn);
return rtn;
}
public static Contact[] listByLastName()
{
return null;
}
public static Contact[] list()
{
return null;
}
public void store()
{
try
{
byte[] data = toBytes();
RecordStore rs = RecordStore.openRecordStore(storeName, true);
rs.addRecordListener(new ChangeNotifier());
if (id < 0)
{
rs.addRecord(data, 0, data.length);
}
else
{
rs.setRecord(id, data, 0, data.length);
}
rs.closeRecordStore();
} catch (RecordStoreException x)
{
x.printStackTrace();
}
}
public void delete()
{
if (id >= 0)
{
try
{
RecordStore rs = RecordStore.openRecordStore(storeName, false);
rs.deleteRecord(id);
rs.closeRecordStore();
} catch (RecordStoreException x)
{
x.printStackTrace();
}
}
else
{
throw new RuntimeException("Invalid record id "+id);
}
}
private byte[] toBytes()
{
return toString().getBytes();
}
private void populate(byte[] data)
{
String s = new String(data);
int idx = s.indexOf("|");
firstName = s.substring(0, idx);
int idx2 = s.indexOf("|", idx+1);
lastName = s.substring(idx+1, idx2);
phoneNumber = s.substring(idx2+1);
}
public String toString()
{
return (firstName + "|" + lastName +"|"+ phoneNumber);
}
}
.Agora tenho que fazer duas agendas, uma para compromissos pessoais e outra para
compromissos profissionais. Deve haver uma escolha no Midlet
para qual agenda o usuário deseja acessar. Um recurso para ler uma agenda localizada em um banco de
dados no servidor, e inserir os dados desta agenda no record
store.Inserir um recurso para remover as agendas
O código é este:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.util.*;
public class RmsAgenda extends MIDlet implements CommandListener
{
Command addCmd = new Command("Novo Contato", Command.SCREEN, 1);
Command selectCmd = new Command("Visualizar", Command.ITEM, 1);
Command exitCmd = new Command("Sair", Command.EXIT, 1);
Command saveCmd = new Command("Salvar", Command.SCREEN, 1);
Command deleteCmd = new Command("Remover", Command.SCREEN, 1);
Command cancelCmd = new Command("Cancelar", Command.SCREEN, 1);
Command searchCmd = new Command("Buscar", Command.SCREEN, 1);
List list = new List("Contatos", List.IMPLICIT);
EditForm form = new EditForm();
SearchForm searchForm = new SearchForm();
NameComparator orderby = new NameComparator();
NameFilter nameFilter = new NameFilter(orderby);
private Contact[] currentContactList;
public RmsAgenda()
{
form.addCommand(saveCmd);
form.addCommand(cancelCmd);
form.addCommand(deleteCmd);
form.setCommandListener(this);
searchForm.addCommand(searchCmd);
searchForm.setCommandListener(this);
list.addCommand(searchCmd);
list.addCommand(addCmd);
list.addCommand(exitCmd);
list.setSelectCommand(selectCmd);
list.setCommandListener(this);
}
public void startApp()
{
refreshList();
}
public void pauseApp()
{
}
public void destroyApp(boolean unc)
{
}
private void refreshList()
{
list.deleteAll();
currentContactList = Contact.list(orderby, nameFilter);
for(int ccnt=0; ccnt < currentContactList.length; ccnt++)
{
String name = currentContactList[ccnt].firstName;
list.append(name + " "+currentContactList[ccnt].phoneNumber, null);
}
Display.getDisplay(this).setCurrent(list);
}
private void showForm(Contact c)
{
form.setContact(c);
Display.getDisplay(this).setCurrent(form);
}
public void commandAction(Command cmd, Displayable d)
{
if (cmd == exitCmd)
{
destroyApp(true);
notifyDestroyed();
}
else if ((d == list) && (cmd == addCmd))
{
form.setContact(new Contact());
Display.getDisplay(this).setCurrent(form);
}
else if ((d == form) && (cmd == saveCmd))
{
Contact c = form.getContact();
c.store();
refreshList();
}
else if ((d == list) && (cmd == selectCmd))
{
showForm(currentContactList[list.getSelectedIndex()]);
}
else if ((d == form) && (cmd == deleteCmd))
{
form.getContact().delete();
refreshList();
}
else if ((d == form) && (cmd == deleteCmd))
{
refreshList();
}
else if ((d == list) && (cmd == searchCmd))
{
Display.getDisplay(this).setCurrent(searchForm);
}
else if ((d == searchForm) && (cmd == searchCmd))
{
nameFilter.criteria = searchForm.getCriteria();
refreshList();
} else if ((d == form) && (cmd == cancelCmd))
{
refreshList();
}
}
}
class NameFilter implements RecordFilter
{
String criteria;
NameComparator orderby;
NameFilter(NameComparator orderby)
{
this.orderby = orderby;
}
public boolean matches(byte[] candidate)
{
if ((criteria == null) || (criteria.length() == 0))
{
return true;
}
else
return new Contact(candidate).firstName.startsWith(criteria);
}
}
class NameComparator implements RecordComparator
{
public int compare(byte[] rec1, byte[] rec2)
{
Contact c1 = new Contact(rec1);
Contact c2 = new Contact(rec2);
String s1 = c1.firstName;
String s2 = c2.firstName;
if (s1.compareTo(s2) == 0)
{
return RecordComparator.EQUIVALENT;
}
else if (s1.compareTo(s2) > 0)
{
System.out.println(c1+ " then " + c2);
return RecordComparator.FOLLOWS;
}
else
{
System.out.println(c2+ " then " + c1);
return RecordComparator.PRECEDES;
}
}
}
class ChangeNotifier implements RecordListener
{
public void recordAdded(RecordStore recordStore, int recordId){
try {
System.out.println("Added a record to "+recordStore.getName() + " id="+recordId);
} catch (RecordStoreNotOpenException x) {
x.printStackTrace();
}
}
public void recordChanged(RecordStore recordStore, int recordId){
try {
System.out.println("Changed a record in "+recordStore.getName() + " id="+recordId);
} catch (RecordStoreNotOpenException x) {
x.printStackTrace();
}
}
public void recordDeleted(RecordStore recordStore, int recordId){
try {
System.out.println("Deleted record from "+recordStore.getName() + " id="+recordId);
} catch (RecordStoreNotOpenException x) {
x.printStackTrace();
}
}
}
class SearchForm extends Form
{
private TextField searchField = new TextField("Buscar: ", "", 15, TextField.ANY);
public SearchForm()
{
super("Criterio de Busca");
append(searchField);
}
public String getCriteria()
{
return searchField.getString();
}
}
class EditForm extends Form
{
private Contact contact;
private TextField firstNameFld = new TextField("Nome: ", "", 15, TextField.ANY);
private TextField lastNameFld = new TextField("Sobrenome: ", "", 15, TextField.ANY);
private TextField phoneFld = new TextField("Telefone: ", "", 10, TextField.PHONENUMBER);
public EditForm()
{
super("Editar Contato");
append(firstNameFld);
append(lastNameFld);
append(phoneFld);
}
public void setContact(Contact c)//envia para a classe conta
{
contact = c;
firstNameFld.setString(contact.firstName);
lastNameFld.setString(contact.lastName);
phoneFld.setString(contact.phoneNumber);
}
public Contact getContact()//atribui para a classe conta
{
contact.firstName = firstNameFld.getString();
contact.lastName = lastNameFld.getString();
contact.phoneNumber = phoneFld.getString();
return contact;
}
}
class Contact//cria o arquivo,le,
{
private static final String storeName = "AgendaDB";
String firstName;
String lastName;
String phoneNumber;
private int id = -1;//uma variavel para armazenar a
//posição,ou seja, na hora de ler o registro
public Contact()
{
id = -1;
}
public Contact(int id)
{
this.id = id;
}
public Contact(byte[] data)//cria um registro por dados em bytes
{
populate(data);
}
public static Contact[] list(RecordComparator orderby, RecordFilter nameFilter)
{
Vector v = new Vector();
try
{
RecordStore rs = RecordStore.openRecordStore(storeName, true);
RecordEnumeration e = rs.enumerateRecords(nameFilter, orderby, false);
while (e.hasNextElement())
{
int id = e.nextRecordId();
Contact c = new Contact(id);
c.populate(rs.getRecord(id));
v.addElement(c);
}
rs.closeRecordStore();
} catch (RecordStoreException x)
{
x.printStackTrace();
return null;
}
Contact[] rtn = new Contact[v.size()];
v.copyInto(rtn);
return rtn;
}
public static Contact[] listByLastName()
{
return null;
}
public static Contact[] list()
{
return null;
}
public void store()
{
try
{
byte[] data = toBytes();
RecordStore rs = RecordStore.openRecordStore(storeName, true);
rs.addRecordListener(new ChangeNotifier());
if (id < 0)
{
rs.addRecord(data, 0, data.length);
}
else
{
rs.setRecord(id, data, 0, data.length);
}
rs.closeRecordStore();
} catch (RecordStoreException x)
{
x.printStackTrace();
}
}
public void delete()
{
if (id >= 0)
{
try
{
RecordStore rs = RecordStore.openRecordStore(storeName, false);
rs.deleteRecord(id);
rs.closeRecordStore();
} catch (RecordStoreException x)
{
x.printStackTrace();
}
}
else
{
throw new RuntimeException("Invalid record id "+id);
}
}
private byte[] toBytes()
{
return toString().getBytes();
}
private void populate(byte[] data)
{
String s = new String(data);
int idx = s.indexOf("|");
firstName = s.substring(0, idx);
int idx2 = s.indexOf("|", idx+1);
lastName = s.substring(idx+1, idx2);
phoneNumber = s.substring(idx2+1);
}
public String toString()
{
return (firstName + "|" + lastName +"|"+ phoneNumber);
}
}
so pra ficar melhor de LER
bom meu caro…pra começar…eu nao usaria o RecordStore assim no seco…usaria o floggy…bem mais simples de buscar…salvar…etc…segundo:
vc pode declarar mo seu projeto qauntas midlets quiser…vc so tem que apontar la na sua propriedades do projeto quem é midlet e quem nao…que ai o emulador faz isso pra ti…vc ta usando o netbeans?