2011-04-21 55 views
2

我想在表格单元格中添加一个组合框来提供拖放选项LWUIT。如何在使用LWUIT - J2ME的表格单元格中添加组合框?

我已经使用这个选项吧..

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(); 

但它返回的地址n在小区内的所有属性值;而显示组合框在细胞 ...

答: [email protected]

任何一个可以帮助我解决这个... ???

回答

0

为了响应您对我的旧question的消息,请按照我提供的示例扩展Table。

重写createCell方法以返回包含它的列的combox。

1

我得到了它。经过一些google搜索...: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(); 

    } 
} 
相关问题