How can I add combo Box In a Table cell using LWUIT — J2ME?

依然范特西╮ 提交于 2020-01-15 05:47:52

问题


I want to add a combo Box in table cell to provide drag n drop option LWUIT.

I have used this option for it ..

    private String strCmbBox[] = { "1", "2", "3", "4" };

    ComboBox comboRdoBox = new ComboBox(strCmbBox);
    comboRdoBox.setListCellRenderer(new comboBoxRenderer());

    TableModel model = new DefaultTableModel(new String[] { "Col 1",
            "Col 2", "Col 3" }, new Object[][] {
            {"Row 1",new DefaultTableModel(new String[] { "1" },
            new Object[][] { { comboRdoBox }, { "lbl" } }),
            "Row X" }, { "Row 2", "Row B", "Row Y" },
            { "Row 3", "Row C", "Row Z" }, 
            { "Row 4", "Row D", "Row K" }, });

    Table table = new Table(model);

    table.initComponent();
    f.addComponent(table);

    f.show();

but it returns as a address n all attributes value in cell ; rather displaying combo Box in cell...

Ans : com.sun.lwuit.table.DefaultTableModel@f828ed68

Can any one help me to solve this ... ???


回答1:


I got it .. after some googling ... :D

package examples;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import com.sun.lwuit.ComboBox;
import com.sun.lwuit.Component;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;

import com.sun.lwuit.List;
import com.sun.lwuit.RadioButton;

import com.sun.lwuit.list.ListCellRenderer;
import com.sun.lwuit.table.DefaultTableModel;
import com.sun.lwuit.table.Table;
import com.sun.lwuit.table.TableModel;

class CustomTable extends Table {

    static ComboBox comboRdoBox[];

    public CustomTable(TableModel model) {
        super(model);
        comboRdoBox = new ComboBox[this.getModel().getRowCount()];
    }

    protected Component createCell(Object value, int row, int column,
            boolean editable) {
        System.out.print("row : " + row);
        System.out.println(" column : " + column);

        // if (row == 2) {
        switch (column) {
        case 1:
            if (comboRdoBox[column] == null) {
                comboRdoBox[column] = new ComboBox(DemoTable2.strCmbBox);
                comboRdoBox[column].setListCellRenderer(new rdioBoxRenderer());
            }

            return comboRdoBox[column];
        }

        // }

        return super.createCell(value, row, column, editable);
    }
}

class rdioBoxRenderer extends RadioButton implements ListCellRenderer {

    public rdioBoxRenderer() {
        super("In super");
    }

    public Component getListCellRendererComponent(List arg0, Object value,
            int index, boolean isSelected) {
        // TODO Auto-generated method stub
        setText(" value :" + value + " index: " + (index + 1));
        if (isSelected) {
            setFocus(true);
            setSelected(true);
        } else {
            setFocus(false);
            setSelected(false);
        }
        return this;
    }

    public Component getListFocusComponent(List arg0) {
        setText("");
        setFocus(true);
        setSelected(true);
        return this;
    }

}

public class demoTable extends MIDlet {

    public demoTable() {
        // TODO Auto-generated constructor stub
    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
        // TODO Auto-generated method stub

    }

    protected void pauseApp() {
        // TODO Auto-generated method stub

    }

    protected void startApp() throws MIDletStateChangeException {
        Display.init(this);
        Form form = new Form("Hello Form");
        // form.setLayout(new BorderLayout());

        TableModel model = new DefaultTableModel(new String[] { "Col 1",
                "Col 2", "Col 3" }, new Object[][] {
                { "Row 1", "Row A", "Row X" }, { "Row 2", "Row B", "Row Y" },
                { "Row 3", "Row C", "Row Z" }, { "Row 4", "Row D", "Row K" }, });

        CustomTable customTable = new CustomTable(model);
        form.addComponent(customTable);
        form.show();

    }
}



回答2:


In response to your message to my old question, extend Table like in the example I provide.

Override the createCell method to return the combox for the column containing it.



来源:https://stackoverflow.com/questions/5740411/how-can-i-add-combo-box-in-a-table-cell-using-lwuit-j2me

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!