我想在表格单元格中添加一个组合框,以提供拖放选项LWUIT。
我已经使用了这个选项..
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单元格中的所有属性值;而是显示组合框 在单元格......
答案:答: com.sun.lwuit.table.DefaultTableModel@f828ed68任何人都可以帮我解决这个问题...... ???
答案 0 :(得分:1)
我得到了...经过一些谷歌搜索......: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();
}
}
答案 1 :(得分:0)
在回复您对旧版question的邮件时,请像我提供的示例一样扩展表格。
重写createCell方法以返回包含它的列的combox。