在lwuit列表中显示记录存储记录

时间:2013-04-28 12:34:20

标签: lwuit rms lwuit-list

我有一个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");


              }




    }

}

1 个答案:

答案 0 :(得分:1)

调用getRecordData / getRecordData2函数时失败。

在这个函数中,你调用recored data并返回字符串数组。但要注意,每次actionPerformed函数调用时都会调用这个函数(当ActionListener响应时)。

这就是你的列表中有乘法记录的原因。你在调用中获得相同的数组,并从文本字段中获得新的结果。

解决方案提示: 您可以在RMS中保存长度记录的数据,并且每次调用actionPerformed时,您都可以从计数器复制到新的记录存储库。