我有这个功能,我想在点击按钮时返回一个值。我知道它不起作用,但我该如何解决这个问题呢?我已经用Google搜索过了,但找不到相关内容。
我的代码:
public String OutputText()
{
layout.show(mainpanel, "PANEL");
testbutton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
return textfield.getText();
}
});
}
答案 0 :(得分:0)
您无法从actionPerformed()
返回值,即使可以,也不会影响OutputText()
方法返回的内容。当您运行OutputText()
时,它会向按钮添加ActionListener
,但只有在按下按钮时才会异步调用该方法。这就是为什么在调用OutputText()
和调用actionPerformed()
之间可能需要很长时间。
如果要显示文本字段中的内容,可以将System.out.println(textfield.getText())
放在actionPerformed()
方法中。
答案 1 :(得分:0)
您无法从void方法返回值。但是你可以把它打印出来。或者,您可以调用一个返回值的方法,例如:
public String returnStringValue(){
return textfield.getText();
}
public void actionPerformed(ActionEvent arg0) {
lblAnotherlabel.setText(returnStringValue);
}
但是,如果能直接实现这一目标,为什么要这样做?
答案 2 :(得分:0)
您可以使用CallBack方法并将返回值传递给回调接口:
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());
}
});
}
}