1

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

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

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

事件。最后我正在重新调整ArrayList从用户那里获取的值。

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

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

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

4

1 回答 1

3

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

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

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

在上面的代码片段中,它将执行A,然后将侦听器附加到按钮,并立即继续B。只有在按下按钮时才会触发侦听器代码。soC仅在按下按钮时执行,也就是在B.

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

于 2012-10-16T18:16:41.623 回答