从Action Listener返回值

我有这个function,我想在点击按钮时返回一个值。 我知道它不起作用,但我该如何解决这个问题呢? 我已经开始搜索它,但找不到相关的东西。

我的代码:

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); } 

但是,如果你能直接实现这一目的,那为什么呢?

您可以使用CallBack方法并将返回值传递给Call back接口:

 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()); } }); } 

}