TextField 没有动态更新

Posted

技术标签:

【中文标题】TextField 没有动态更新【英文标题】:TextField not updating dynamically 【发布时间】:2013-06-25 19:10:59 【问题描述】:

这是一个非常简单的代码,其中按钮上的文本被复制到 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();
                   

【问题讨论】:

嗯...现在是哪个框架?看起来至少与 Swing 无关(Button 是桌面上下文中的 AWT 组件) 它的 LWUIT 和 swing 非常相似,所以我添加了 swing 标签 【参考方案1】:

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

  data.setText(ab.getText());
  data.validate(); or data.repaint();

【讨论】:

仅供参考,您只需要验证。它不是绘画问题,而是布局问题,文本字段需要增长。您还应该接受权威人士的回答并最好投票赞成。【参考方案2】:

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

你调用 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();
               

【讨论】:

【参考方案3】:
          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();
                   

【讨论】:

以上是关于TextField 没有动态更新的主要内容,如果未能解决你的问题,请参考以下文章

TabBarView动态更新列表

如何在 extJs3 中动态更改 fieldLabel

为啥 FlatList 在 React Native 中没有动态更新

有没有办法动态改变 Flutter TextField 的 maxLines?

HTML img src 没有动态更新

CSS没有在AngularJS中动态更新