2013-08-20 38 views
1

我試圖創建一個包含「generate」按鈕的方法,該方法允許您在方法的調用類中每次單擊按鈕時都返回一個值(字符串或其他) 。 我試着這樣做:Java swing:單擊按鈕時的返回值

//start methode in "Generator" Class 
public String start() 
{ 
String format = new String(""); 

     this.generateBtn.addActionListener(new ActionListener() 
    { 
     public String actionPerformed(ActionEvent arg0) 
     { 
      //after doing operations on "format" string 

        return format; 
     } 

    }); 

,我從另一個類調用start方法是這樣的:

Generator genDialog =new Generator(); 
String format = genDialog.start(); 

我得到這個錯誤在生成器類:

返回類型與ActionListener.actionPerformed(ActionEvent)不兼容

如何實現我想要的功能做什麼? 我需要我獲得我點擊一個按鈕時所調用的類的值。

+0

這沒有任何意義。如果用戶從不點擊該怎麼辦?你想要一個像諾言一樣的東西。 – SLaks

+1

只需創建一個方法,該方法返回'String'並從'actionPerformed()'方法中調用此方法:-)您不能更改'actionPerformed()'方法的簽名,它是接口的一種方法,你必須__define__,同時實現接口,遵守合同:-) –

回答

2

看起來你的Generator類是一個對話框。如果它是模態對話框,setVisible(true)方法將會阻塞,直到對話框被隱藏。所以你的generateBtn動作監聽器應該做的是將生成的字符串存儲在一個成員變量中,然後調用setVisible(false)。你的start方法然後設置調用setVisible(true)並返回值。

它看起來像這樣。

public class Generator extends JDialog { 
    private String format; 
    private JButton generateBtn; 

    public Generator() { 
     setModal(true); 
     generateBtn.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       // create format string 
       setVisible(false); 
      } 
     }); 
    } 

    public String start() { 
     setVisible(true); 
     return format; 
    } 
} 
+0

好!!!!!感謝您的幫助 :) – Akram

0

你不能有actionPerformed()返回一個字符串...我看不出你需要的原因。我認爲你可以在actionPerformed()內執行format所需的任何操作。