2014-01-29 65 views
0

我有這個函數,我想在點擊按鈕時返回一個值。我知道這行不通,但我該如何解決這個問題?我已經搜索了一下,但找不到相關的東西。Action Listener的返回值

我的代碼:

public String OutputText() 
{ 
    layout.show(mainpanel, "PANEL"); 
    testbutton.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent arg0) 
     { 
      return textfield.getText(); 
     } 
    }); 
} 
+0

爲什麼你想要的函數返回值? – sanbhat

+0

你想用'返回'的值怎麼辦? – kmera

+0

所以這將工作:'system.out.println(OutputText());例如:) –

回答

0

不能從actionPerformed()返回值,即使你可以,也不會影響什麼你OutputText()方法返回。當你運行你的OutputText()時,它會向按鈕添加一個ActionListener,但只有在按下按鈕時纔會異步調用該方法。這就是爲什麼在調用OutputText()和調用actionPerformed()之間可能需要很長時間。

如果要顯示文本字段中的內容,可以將System.out.println(textfield.getText())放在actionPerformed()方法中。

0

您無法從void方法返回值。但是,您可以打印出來。或者,您可以調用一個返回值的方法,例如:

public String returnStringValue(){ 
return textfield.getText(); 
} 
public void actionPerformed(ActionEvent arg0) { 

lblAnotherlabel.setText(returnStringValue); 
    } 

但是,爲什麼所有這些都可以直接實現?

0

您可以使用回調方法和返回值傳遞給調用背部接口:

public class TestCallBack { 
    JButton testbutton; 

String value; 

public interface Callback { 
    void setResult(String result); 

} 

public class MyCallBack implements Callback { 
    @Override 
    public void setResult(String result) { 
     value = result; 
    } 
} 

public static abstract class MyActionListener implements ActionListener { 
    private Callback callback; 

    public MyActionListener(Callback callback) { 
     this.callback = callback; 
    } 

} 

public String OutputText() { 
    layout.show(mainpanel, "PANEL"); 

    testbutton.addActionListener(new MyActionListener(new MyCallBack() 

    ) { 
     public void actionPerformed(ActionEvent arg0) { 

      this.callback.setResult(textfield.getText()); 


     } 
    }); 
} 

}

相關問題