我有一个LWUIT应用程序 包含recordStore和recordStore2 RecordStores getRecordData()检索所有recordStore元素的方法 getRecordData2()检索所有recordStore2元素的方法
三种形式作为应用程序屏幕(f,g和ff) g表单包含以下小部件 一个名为tf的TextField,它允许最终用户为recordStore或recordStore2 RecordStores写一条记录。
两个单选按钮rb和rb2 一个名为add的按钮,用于在选择rb radiobutton时将记录(在tf TextField中写入)添加到recordStore RecordStore,或者在选择rb2 radiobutton时将记录添加到recordStore2 RecordStore。 两个列表称为mylist和mylist2 一个叫全部的按钮 按下按钮All时,将显示ff表单并显示recordstore和recordstore2 RecordStores的所有记录
我面临的问题是,当mylist或mylist2显示时,记录会有乘法
这是我的班级
import java.util.*;
import com.sun.lwuit.table.*;
import com.sun.lwuit.table.DefaultTableModel;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreNotOpenException;
import javax.microedition.rms .*;
import com.sun.lwuit.layouts.*;
import com.sun.lwuit.*;
import javax.microedition.lcdui.Canvas;
import com.sun.lwuit.events.*;
import com.sun.lwuit.plaf.*;
import javax.microedition.midlet.*;
import com.sun.lwuit.geom.*;
import com.sun.lwuit.*;
import com.sun.lwuit.events.*;
public class HelloLWUITMidlet3 extends MIDlet implements Runnable, ActionListener {
private RecordStore recordStore,recordStore2;
String team,team2;
public String [] getRecordData()
{
String[] str = null;
int counter = 0;
try
{
RecordEnumeration enumeration = recordStore.enumerateRecords(null, null, false);
str = new String[recordStore.getNumRecords()];
while(enumeration.hasNextElement())
{
try
{
str[counter] = (new String(enumeration.nextRecord()));
counter ++;
}
catch (Exception e)
{
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
public String [] getRecordData2()
{
String[] str = null;
int counter = 0;
try
{
RecordEnumeration enumeration = recordStore2.enumerateRecords(null, null, false);
str = new String[recordStore2.getNumRecords()];
while(enumeration.hasNextElement())
{
try
{
str[counter] = (new String(enumeration.nextRecord()));
counter ++;
}
catch (Exception e)
{
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
public void startApp()
{
com.sun.lwuit.Display.init(this);
int bgColor =0x0066CC;
final ButtonGroup group = new ButtonGroup();
final RadioButton rb = new RadioButton("First Team");
final RadioButton rb2 = new RadioButton("Second Team");
group.add(rb);
group.add(rb2);
//TableModel model = new DefaultTableModel(new String[]{"Column 1", "Column 2"});
final f1 g = new f1();
final com.sun.lwuit.List mylist = new com.sun.lwuit.List();
final com.sun.lwuit.List mylist2 = new com.sun.lwuit.List();
final form6 my = new form6();
final com.sun.lwuit.Form f = new com.sun.lwuit.Form("Football");
f.getStyle().setBgColor(0X99CCFF);
BoxLayout boxlayout =new BoxLayout(BoxLayout.X_AXIS);
// com.sun.lwuit.Command exitCommand = new com.sun.lwuit.Command("????");
final Button goals = new Button("See goals");
final Button button = new Button("Goals Record");
final com.sun.lwuit.TextField tf =new com.sun.lwuit.TextField();
final com.sun.lwuit.TextField txtfield5 =new com.sun.lwuit.TextField();
final com.sun.lwuit.TextField txtfield6 =new com.sun.lwuit.TextField();
final Button addition = new Button("Add Goals");
final Button All = new Button("All Goals");
addition.getStyle().setBgColor(0X0066CC);
com.sun.lwuit.Command back = new com.sun.lwuit.Command("Main_Screen");
final form6 ff = new form6();
button.getStyle().setBgColor(0X0066CC);
goals.getStyle().setBgColor(0X0066CC);
All.getStyle().setBgColor(0X0066CC);
Style g_style5 = g.getSelectedStyle() ;
f.addComponent(button);
ff.addCommand(back);
//g.addComponent(main_screen);
g.addComponent(tf);
g.addComponent(addition);
g.addComponent(rb);
g.addComponent(rb2);
g.addComponent(All);
g.getStyle().setBgColor(0X99CCFF);
g.addCommand(back);
g.addCommandListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae) {
f.show();
}
}
);
ff.addCommandListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae) {
f.show();
}
}
);
ff.getStyle().setBgColor(0X99CCFF);
try{
recordStore2 = RecordStore.openRecordStore("My Record Store2", true);
}
catch(Exception ex)
{ }
try{
recordStore = RecordStore.openRecordStore("My Record Store", true);
}
catch(Exception ex)
{ }
All.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try
{
com.sun.lwuit.Label l = new com.sun.lwuit.Label("First Team Goals") ;
ff.addComponent(l);
String [] record= getRecordData();
int j1;
String valueToBeInserted2="";
for( j1=0;j1< getRecordData().length;j1++)
{
valueToBeInserted2=valueToBeInserted2 + " " + record[j1];
mylist.addItem(record[j1]);
}
ff.addComponent(mylist);
com.sun.lwuit.Label ll = new com.sun.lwuit.Label("Second Team Goals") ;
ff.addComponent(ll);
String [] record2= getRecordData2();
int j2;
String valueToBeInserted="";
for( j2=0;j2< getRecordData2().length;j2++)
{
valueToBeInserted=valueToBeInserted + " " + record2[j2];
mylist2.addItem(record2[j2]);
}
ff.addComponent(mylist2);
}
catch(java.lang.IllegalArgumentException e){}
finally {
ff.show();
}
}
}
);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
g.show();
}
}
);
goals.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
}
}
);
final Thread th = new Thread(this);
addition.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae) {
String s =tf.getText();
if(rb.isSelected())
{
if(s!=null && s.length() > 0)
{
try{
String kk =tf.getText();
mylist.addItem(kk);
byte bytestream[] = kk.getBytes() ;
int i = recordStore.addRecord(bytestream, 0, bytestream.length);
}
catch(Exception ex) { }
Dialog validDialog = new Dialog(" ");
Style Dialogstyle = validDialog.getSelectedStyle() ;
validDialog.setScrollable(false);
validDialog.getDialogStyle().setBgColor(0x0066CC);
validDialog.setTimeout(1000); // set timeout milliseconds
TextArea textArea = new TextArea("...."); //pass the alert text here
textArea.setFocusable(false);
textArea.setText("A new goal has been added"+"" );
validDialog.addComponent(textArea);
validDialog.show(0, 10, 10, 10, true);
}
}
else if (rb2.isSelected())
{
if(s!=null && s.length() > 0)
{
try{
String kk =tf.getText();
mylist2.addItem(kk);
byte bytestream[] = kk.getBytes() ;
int i = recordStore2.addRecord(bytestream, 0, bytestream.length);
}
catch(Exception ex) { }
Dialog validDialog = new Dialog(" ");
Style Dialogstyle = validDialog.getSelectedStyle() ;
validDialog.setScrollable(false);
validDialog.getDialogStyle().setBgColor(0x0066CC);
validDialog.setTimeout(1000); // set timeout milliseconds
TextArea textArea = new TextArea("...."); //pass the al newert text here
textArea.setFocusable(false);
textArea.setText("A new Goal has been added"+"" );
validDialog.addComponent(textArea);
validDialog.show(0, 10, 10, 10, true);
}
}
else if((rb.isSelected()==false&&rb.isSelected()==false)||(s==null && s.length()<= 0))
{
Dialog validDialo = new Dialog(" ");
validDialo.setScrollable(false);
validDialo.getDialogStyle().setBgColor(0x0066CC);
validDialo.setTimeout(5000); // set timeout milliseconds
TextArea textArea = new TextArea("...."); //pass the alert text here
textArea.setFocusable(false);
textArea.setText("please enter scorer name and choose his team");
validDialo.addComponent(textArea);
//validDialo.getStyle().set3DText(true, true);
validDialo.show(50, 50, 50, 50, true);
txtfield6.clear();
}
}
}
);
f.show();
}
public void run ()
{
while(true)
{
String get[] = getRecordData();
Dialog validDialog = new Dialog(" ");
Style Dialogstyle = validDialog.getSelectedStyle() ;
validDialog.setTimeout(5000);
validDialog.setScrollable(true);
validDialog.setLayout(null);
validDialog.setTimeout(5000);
TextArea textArea = new TextArea( );
for(int ii=0;ii<getRecordData().length;ii++ )
{
textArea.setColumns(getRecordData().length);
validDialog.addComponent(textArea);
validDialog.show(10, 10, 10, 10, true);
System.out.println(get[ii]+"\n");
System.out.println(textArea.getColumns()+"\n");
}
}
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void actionPerformed(ActionEvent ae) {
notifyDestroyed();
}
public class f1 extends com.sun.lwuit.Form
{
com.sun.lwuit.TextField tf;
public f1()
{
com.sun.lwuit.Form f1 = new com.sun.lwuit.Form("Goals Records");
tf =new com.sun.lwuit.TextField();
}
}
public class form6 extends com.sun.lwuit.Form
{
com.sun.lwuit.TextField txtfield3;
com.sun.lwuit.TextField tf3;
public form6()
{
com.sun.lwuit.Form mylist = new com.sun.lwuit.Form("Goals List");
}
}
}
答案 0 :(得分:1)
调用getRecordData / getRecordData2函数时失败。
在这个函数中,你调用recored data并返回字符串数组。但要注意,每次actionPerformed函数调用时都会调用这个函数(当ActionListener响应时)。
这就是你的列表中有乘法记录的原因。你在调用中获得相同的数组,并从文本字段中获得新的结果。
解决方案提示: 您可以在RMS中保存长度记录的数据,并且每次调用actionPerformed时,您都可以从计数器复制到新的记录存储库。