Codename One:实现跟踪功能并执行计算

时间:2016-03-15 17:48:36

标签: codenameone

我想实施一项计算来跟踪液体摄入量。这应该从用户那里获得输入,执行计算并显示结果。

正如上一篇文章所述,我已经更新了我的代码(来自方法AddItem()),如下所示。

addItem.addComponent(selectItem);
    TextField quantity = new TextField("", "Quantity (ml or g)", 4, TextArea.NUMERIC);
    addItem.addComponent(quantity);
    Button add = new Button("Add");
    addItem.addComponent(add);       
    TextArea results = new TextArea("Results");
    addItem.addComponent(results);
    //TextArea total = new TextArea("Add Item");
    //addItem.addComponent(total);

//--------------------------------------------------------------
    add.addActionListener((ActionEvent ev) -> {
        Storage s = Storage.getInstance();
int total = 0;
String num = quantity.getText();
Integer num2 = Integer.parseInt(num);
total = total + num2;
// Save the "Hello World" string to storage
s.writeObject("volume", total);
Container ctrResult = new Container(new GridLayout(1,3)); 
//Define a new container associated to a gridlayout with 1 row and 1 column
ctrResult.addComponent(new Label("Volume"));
ctrResult.addComponent(new Label(Integer.toString(total)));
ctrResult.addComponent(new Label(Integer.toString(total/volume*100)));
//Because you use a value inside a function, addItem should be initialized as final
addItem.addComponent(ctrResult);
    });
//--------------------------------------------------------------

    return addItem;

此代码显示用户输入(来自用户的编号)。我想保存总数并在计算中使用它来更新正在保存的内容。此外,如果用户添加了另一个数量,则会显示一个新行,但我希望更新现有行。

此外,我想使用以下变量执行另一个计算来计算百分比(在另一个名为Settings()的方法中)。

TextField volume = new TextField("", "Volume (ml)", 4, TextArea.NUMERIC);
    settings.addComponent(volume);

计算结果为:总数/体积* 100。

这两种方法都是公开的。

因此,我很感激有关如何在我的代码中实现这一点的任何帮助和指导。

1 个答案:

答案 0 :(得分:0)

要更新已在屏幕上显示的组件中的现有值,您需要引用该组件。所以你需要在某个地方存储指向该组件的指针。

获得Label的组件参考后,您可以在其上调用setText(),根据您的逻辑将其值设置为您想要的任何值。

您可以将组件引用存储在类文件中,也可以在父Form上使用putClientProperty。请注意,后一种方法更具挑战性。