5

这是一个非常简单的代码,其中按钮上的文本被复制到 TextField。代码工作正常,但 TextField 在单击按钮时不会立即更新。它仅在我单击 TextField 或当我拖动表单而不是立即按下按钮时才会更新。为什么会发生这种情况,这种行为是出乎意料的。我正在支持 LWUIT 的诺基亚 501 模拟器上测试此代码。

           a = new Form("CALCULATOR")
                   final TextArea data = new TextArea();
           final Button ab = new Button("Some Value");
           ab.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub

                data.setText(ab.getText());

            }

           });
           a.addComponent(ab);
           a.addComponent(data);
           a.show();
                   }
4

3 回答 3

5

在文本字段中设置文本后重新绘制它。这可能有效

  data.setText(ab.getText());
  data.validate(); or data.repaint();
于 2013-06-26T13:32:52.300 回答
0

发生这种情况是因为您的代码。我解释:

你调用函数actionPerformed:这是当用户做出“在我点击TextField之后......”之类的动作时调用的lisitner。

你需要做的很简单:

  a = new Form("CALCULATOR")
               final TextArea data = new TextArea();
       final Button ab = new Button("Some Value");
       ab.addActionListener(new ActionListener(){
       data.setText(ab.getText());
       a.addComponent(ab);
       a.addComponent(data);
       a.show();
               }
于 2013-06-26T08:38:16.350 回答
0
          a = new Form("CALCULATOR")
                   final TextArea data = new TextArea();
           final Button ab = new Button("Some Value");
           ab.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub

              //  data.setText(ab.getText()); // You should not use this

                // Use this instead
                  data.setText(ab.getActionCommand());

            }

           });
           a.addComponent(ab);
           a.addComponent(data);
           a.show();
                   }
于 2015-10-22T20:46:57.193 回答