从Action Listener返回值

时间:2014-01-29 12:33:04

标签: java swing button return textfield

我有这个功能,我想在点击按钮时返回一个值。我知道它不起作用,但我该如何解决这个问题呢?我已经用Google搜索过了,但找不到相关内容。

我的代码:

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

3 个答案:

答案 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());


        }
    });
}

}