矢量中的J2ME TextField?

时间:2012-04-04 13:04:16

标签: arrays java-me lcdui

我想要一个可以添加或删除TextFields的表单。

我到目前为止创建了一个数组并调整大小(实际上将原始数组复制到一个新的更大的数组),然后删除所有表单元素,并再次添加所有内容+这个新的TextField数组

但是我认为当有很多TextFields时,这会减慢程序的速度 将TextFileds添加到Vector无效。当它要将TextField添加到表单时,

form.append(vector.elementAt(i));

它说元素不是它。

method Form.append(Item) is not applicable
  (actual argument Object cannot be converted to Item by method invocation conversion)
method Form.append(Image) is not applicable
  (actual argument Object cannot be converted to Image by method invocation conversion)
method Form.append(String) is not applicable
  (actual argument Object cannot be converted to String by method invocation conversion)

我应该通过调整数组大小来计算,还是有更好的方法?

2 个答案:

答案 0 :(得分:2)

根据表格文档“表格中包含的项目可以使用追加,删除,插入和设置方法进行编辑。”而且你也有一个get方法,所以我认为你根本不需要Vector。让我们说你有:


    Form form = new Form("Multiple fields");

    // If you want to add a new TextField
    form.append(new TextField("label", "text", 10/*maxSize*/, TextField.ANY));

    // if you want to delete the last TextField:
    form.delete(form.size() - 1);

    // to iterate at all fields:
    for (int i = 0; i < form.size(); i++) {
        TextField textField = (TextField) form.get(i);
    }

答案 1 :(得分:0)

为了避免在添加到Form时出现编译错误,请将Vector元素显式转换为所需类型(Item):

form.append((Item)(vector.elementAt(i)));

请注意,如果您习惯使用Java SE 5或更高版本 - 请记住,Java ME基于旧版本(JDK 1.3)。因此,您会看到更多显式的演员表,因为不能选择通用。