2014-01-29 49 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()); 


     } 
    }); 
} 

}

相关问题