2012-10-16 95 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

相關問題