0

recordStore と recordStore2 を含む LWUIT アプリケーションがあります RecordStores getRecordData() すべての recordStore 要素を取得するメソッド getRecordData2() すべての recordStore2 要素を取得するメソッド

アプリケーション画面としての 3 つのフォーム (f 、 g 、および ff ) 。
g フォームには、エンド ユーザーが recordStore または recordStore2 RecordStores のいずれかのレコードを書き込むことができるようにする tf と呼ばれる TextField の次のウィジェットが含まれています。

2 つのラジオ ボタン rb と rb2 rb ラジオ ボタンが選択された場合、recordStore RecordStore にレコード (tf TextField に書き込まれたもの) を追加するための追加と呼ばれるボタン、または rb2 ラジオ ボタンが選択された場合に recordStore2 RecordStore にレコードを追加するための追加と呼ばれるボタン。mylist と mylist2 という 2 つのリスト all というボタン All ボタンを押すと、ff フォームが表示され、recordstore と recordstore2 のすべてのレコードが表示されます。

私が直面している問題は、 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");


              }




    }

}
4

1 に答える 1

1

getRecordData/getRecordData2 関数を呼び出すと失敗します。

この関数では、記録されたデータを呼び出して文字列配列を返します。ただし、actionPerformed 関数が呼び出されるたびにこの関数を呼び出すことに注意してください (ActionListener が Respond の場合)。

これが、リストに乗算レコードがある理由です。これまでの呼び出しで同じ配列を取得し、テキスト フィールドから新しい結果を追加します。

解決策のヒント: 長さを記録したデータを RMS に保存し、actionPerformed が呼び出されるたびに、カウンターから新しいレコード ストアの長さにコピーできます。

于 2013-04-29T06:47:36.913 に答える