📄 recordsearch.java
字号:
import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.*;
import javax.microedition.lcdui.*;
public class RecordSearch extends MIDlet implements CommandListener{
private Display display; // Reference to Display object
private Form fmMain; // The main form
private StringItem siMatch; // The matching text, if any
private Command cmFind; // Command to search Record Store
private Command cmExit; // Command to insert items
private TextField tfFind; // Search text as requested by user
private RecordStore rs = null; // Record store
static final String REC_STORE = "db_2"; // Name of Record Store
public RecordSearch() {
display = Display.getDisplay(this);
// Define textfield, stringItem and commands
tfFind = new TextField("Find", "", 10, TextField.ANY);
siMatch = new StringItem(null, null);
cmExit = new Command("Exit", Command.EXIT, 1);
cmFind = new Command("Find", Command.SCREEN, 2);
// Create the form, add commands
fmMain = new Form("Record Search");
fmMain.addCommand(cmExit);
fmMain.addCommand(cmFind);
// Append textfield and stringItem
fmMain.append(tfFind);
fmMain.append(siMatch);
// Capture events
fmMain.setCommandListener(this);
//--------------------------------
// Open and write to Record Store
//--------------------------------
openRecStore(); // Create the Record Store
writeTestData(); // Write a series of records
}
public void destroyApp( boolean unconditional){
closeRecStore(); // Close Record Store
}
public void startApp(){display.setCurrent(fmMain);}
public void pauseApp(){}
public void openRecStore(){
try{
// Create Record Store if it does not exist
rs = RecordStore.openRecordStore(REC_STORE, true);
}catch (Exception e){
db(e.toString());
}
}
public void closeRecStore(){
try{
rs.closeRecordStore();
}catch (Exception e){
db(e.toString());
}
}
/*--------------------------------------------------
* Create array of data to write into Record Store
*-------------------------------------------------*/
public void writeTestData(){
String[] golfClubs = {
"BeiJing...The capital of my matherland",
"UESTC...University of Electronical Science and Technology of China",
"J2ME is a good sofrware"};
writeRecords(golfClubs);
}
/*--------------------------------------------------
* Write to Record Store.
*-------------------------------------------------*/
public void writeRecords(String[] sData){
byte[] record;
try{
// Only add the records once
if (rs.getNumRecords() > 0)
return;
for (int i = 0; i < sData.length; i++){
record = sData[i].getBytes();
rs.addRecord(record, 0, record.length);
}
}catch (Exception e){
db(e.toString());
}
}
/*--------------------------------------------------
* Search using enumerator and record filter
*-------------------------------------------------*/
private void searchRecordStore(){
try{
// Record store is not empty
if (rs.getNumRecords() > 0){
// Setup the search filter with the user requested text
SearchFilter search = new SearchFilter(tfFind.getString());
RecordEnumeration re = rs.enumerateRecords(search, null, false);
// A match was found using the filter
if (re.numRecords() > 0)
// Show match in the stringItem on the form
siMatch.setText(new String(re.nextRecord()));
re.destroy(); // Free enumerator
}
}catch (Exception e){
db(e.toString());
}
}
public void commandAction(Command c, Displayable s){
if (c == cmFind){
searchRecordStore();
}else if (c == cmExit){
destroyApp(false);
notifyDestroyed();
}
}
/*--------------------------------------------------
* Simple message to console for debug/errors
*-------------------------------------------------*/
private void db(String str){
System.err.println("Msg: " + str);
}
}
/*--------------------------------------------------
* Search for text within a record
* Each record passed in contains only text (String)
*-------------------------------------------------*/
class SearchFilter implements RecordFilter{
private String searchText = null;
public SearchFilter(String searchText){
// This is the text to search for
this.searchText = searchText.toLowerCase();
}
public boolean matches(byte[] candidate){
String str = new String(candidate).toLowerCase();
// Look for a match
if (searchText != null && str.indexOf(searchText) != -1)
return true;
else
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -