-1

lwuit を使用して、いくつかの値と行リスナーを持つテーブルを作成しています。j2meで。ボタンとリスナーを追加して、行リスナーを実装できるテーブルに値を設定しようとしています。次のリンクを使用しました: http://lwuit.blogspot.in/2010/06/headon-that-table.html。しかし、ボタンをテーブルに追加すると、テーブルモデルはテーブルに追加された入力としてオブジェクトのみを受け入れるため、テーブルの最後になります。

このリンクを使用して、次のコマンドでボタンごとにボタンを追加しました。

container.addComponent(new Button("Details"));

また、グリッド レイアウトまたはテーブル レイアウトを作成して、行数 * 列のボタンを追加しようとしましたが、残りのボタンではなく、最後のボタンのリスナーが機能します。このロジックを実装する方法についてのアイデア。私の実際のタスクは、行クリック リスナーをテーブルに追加することです。概念的またはコーディングの助けをいただければ幸いです。

4

1 に答える 1

0

私があなたと共有している友人の答えを得ている間に。彼は、ボタンをグリッドまたはテーブル レイアウトに追加するように言いました。ボタンは、リスナーが適切に管理されるように、2D 配列のように追加する必要があります。

public class Midlet extends MIDlet implements ActionListener{

Form f;
Container c;
private int ROWS=100;
Button b[][];
private int COLUMNS=3;
public void startApp() {
    Display.init(this);

    f=new Form("grid with buttons");
    c=new Container(new TableLayout(ROWS, COLUMNS));
    b=new Button[ROWS][COLUMNS];
    c.setScrollableX(true);
    c.setScrollableY(true);
    //c.setDraggable(true);
    addElements();


    //f.setScrollable(false);
    f.setScrollVisible(true);
    f.addComponent(c);
    f.show();

}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void addElements()
{
    for(int i=0;i<ROWS;i++)
    {
        for(int j=0;j<COLUMNS;j++)
        {
            b[i][j]=new Button(i+" sdkljf "+j);
            c.addComponent(b[i][j]);
            b[i][j].addActionListener(this);
        }
    }

}


/**
 * 
 * @param message message to be displayed
 * @param title title of the alert
 */
 public void showMsg(String message, String title)
{
    final Dialog d=new Dialog(title);
    d.setLayout(new GridLayout(1, 1));
    Button b=new Button("Ok");
    TextArea msg=new TextArea(message);
    msg.setUIID(message);
    msg.setEditable(false);

    //dialogContainer.addComponent(msg);
    //dialogContainer.addComponent(b);

    d.addComponent(msg);
    d.addComponent(b);

    b.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent evt) {
             d.dispose();
        }
    });

    d.show();
}

public void actionPerformed(ActionEvent evt) {

    for(int i=0;i<ROWS;i++)
    {
        for(int j=0;j<COLUMNS;j++)
        {
            if(b[i][j]==evt.getComponent())
            {
                showMsg(i+","+j, "sl;dkf;");
            }
        }
    }

}

}
于 2013-10-28T10:49:24.077 に答える