【问题标题】:Getting values from JTextField on buttonclick event在按钮单击事件上从 JTextField 获取值
【发布时间】:2012-10-16 16:49:24
【问题描述】:

我正在编写一个简单的程序,它使用 3 JTextField 从用户那里获取 3 个值,并带有 2 个按钮,一个用于图表,另一个用于图形。

点击任何这个按钮,从界面获取的值,应该返回给调用函数是要求。 (即我从控制器调用视图并从用户的视图中获取值并期望返回控制器) 为此,我在内部使用了textfield1.getText() 函数:

Button1.addActionListener(new ActionListener() { 
    //Overriding function over here for getting the data
});

事件。最后,我正在重新调整取自用户的值的 ArrayList

但是问题是,一旦我开始运行程序,它不会等待按钮单击,而是直接将ArrayList 使用默认值返回给控制器。

感谢任何对此的快速帮助..

我对听众很陌生,这可能是问题的原因..

【问题讨论】:

  • 尽快发布SSCCE 以获得更好的帮助

标签: swing listener jbutton actionlistener jtextfield


【解决方案1】:

这个问题缺少一些代码来真正查明问题,但我的印象是你认为调用

do A
button.addActionListener( new ActionListener(){
  public void actionPerformed( ActionEvent e ){
    do C
  }
} );
do B

将停止您的代码执行,直到按下按钮。这是不正确的。

在上面的sn-p中,它会做A,然后将监听器附加到按钮上,然后立即继续B。只有在按下按钮时才会触发侦听器代码。所以C只有在按下按钮的时候才会执行,也就是在B之后。

Oracle 网站上有一个关于ActionListeners 的教程。如果您不熟悉您声称的侦听器概念,阅读 Observer design pattern 可能会有所帮助,这是您在附加侦听器时使用的设计模式。

【讨论】:

  • 只是错过了附加代码,///视图的定义(即框架、按钮、字段等创建。///jb1 按钮并在其上添加了侦听器,如下所示 jb1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根 inputParameters.add(0,Double.parseDouble(a.getText())); inputParameters.add(1,Double.parseDouble( b.getText())); inputParameters.add(2,Double.parseDouble(c.getText())); flag=1; } }); Return inputParameters; 但是,这是在操作本身之前返回值。
  • @KunalV 这正是我在回答中所说的。 BC 之前执行
猜你喜欢
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 2021-02-26
相关资源
最近更新 更多