2012-10-16 43 views
1

我正在编写一个简单的程序,它使用3个用户的值,分别是3 JTextField和2个按钮,一个用于图表,另一个用于Graph。在buttonclick上获取JTextField的值事件

单击此按钮的任何一个按钮时,从接口获取的值应返回到调用函数中。 (即我打电话查看来自控制器并鉴于从用户采取的值和在控制器期待背面) 为此,我已经使用textfield1.getText()函数内:

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

事件。最后,我重新调整了从用户处获取的值的ArrayList

然而,问题是,只要程序开始运行,它不会等待按钮点击,而是直接使用默认值将ArrayList返回给Controller。

欣赏任何快速帮助这个..

我非常新的听众,并可能是对这一问题的原因..

+4

邮报[SSCCE(http://sscce.org)为更好地帮助越早 –

回答

3

问题缺少一些代码,真正找准问题,但我我觉得你的印象是

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

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

在上面的代码片段中,它会执行A,然后将侦听器附加到按钮上,并立即继续使用B。监听器代码只有在按下按钮时才会触发。所以C只在按下按钮时执行,这是在B之后。

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

+0

刚刚错过附加代码,视图的 ///定义(即帧,按钮等领域的创作。 /// JB1按钮并加入听众就可以如下面 jb1.addActionListener(新的ActionListener(){ @Override 公共无效的actionPerformed(ActionEvent的发送){// TODO自动生成方法存根 inputParameters.add( 0,Double.parseDouble(a.getText())); inputParameters.add(1,Double.parseDouble(b.getText())); inputParameters.add(2,Double.parseDoubl E(c.getText())); flag = 1; } }); 返回inputParameters; 但是,这是返回值之前的行动本身.. –

+0

@ KunalV这正是我说我的答案。在'C'之前执行'B' – Robin

相关问题