Action Listener的返回值
问题描述:
我有这个函数,我想在点击按钮时返回一个值。我知道这行不通,但我该如何解决这个问题?我已经搜索了一下,但找不到相关的东西。Action Listener的返回值
我的代码:
public String OutputText()
{
layout.show(mainpanel, "PANEL");
testbutton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
return textfield.getText();
}
});
}
答
不能从actionPerformed()
返回值,即使你可以,也不会影响什么你OutputText()
方法返回。当你运行你的OutputText()
时,它会向按钮添加一个ActionListener
,但只有在按下按钮时才会异步调用该方法。这就是为什么在调用OutputText()
和调用actionPerformed()
之间可能需要很长时间。
如果要显示文本字段中的内容,可以将System.out.println(textfield.getText())
放在actionPerformed()
方法中。
答
您无法从void方法返回值。但是,您可以打印出来。或者,您可以调用一个返回值的方法,例如:
public String returnStringValue(){
return textfield.getText();
}
public void actionPerformed(ActionEvent arg0) {
lblAnotherlabel.setText(returnStringValue);
}
但是,为什么所有这些都可以直接实现?
答
您可以使用回调方法和返回值传递给调用背部接口:
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());
}
});
}
}
为什么你想要的函数返回值? – sanbhat
你想用'返回'的值怎么办? – kmera
所以这将工作:'system.out.println(OutputText());例如:) –