Java swing:单击按钮时返回值

Java swing:单击按钮时返回值,java,swing,button,return,actionlistener,Java,Swing,Button,Return,Actionlistener,我试图创建一个包含按钮“generate”的方法,该按钮允许您在每次单击按钮时向方法的调用类返回一个值(字符串或任何内容)。 我试着这样做: //start methode in "Generator" Class public String start() { String format = new String(""); this.generateBtn.addActionListener(new ActionListener() { public

我试图创建一个包含按钮“generate”的方法,该按钮允许您在每次单击按钮时向方法的调用类返回一个值(字符串或任何内容)。 我试着这样做:

//start methode in "Generator" Class
public String start()
{
 String format = new String("");

        this.generateBtn.addActionListener(new ActionListener()
    {
        public String actionPerformed(ActionEvent arg0)
        {  
            //after doing operations on "format" string

                    return format;
        }

    });
我用这种方式从另一个类调用start方法:

Generator genDialog =new Generator();
String format = genDialog.start();
我在Generator类中遇到此错误:

返回类型与ActionListener不兼容。actionPerformed(ActionEvent)

我怎样才能实现我想做的事?
我需要获取我在单击内部按钮时调用的类的值。

您不能让
actionPerformed()
返回字符串…我看不出您需要返回字符串的原因。我认为您可以在
actionPerformed()

format
内部执行所需的任何操作。看起来,您的生成器类是一个对话框。如果它是一个模态对话框,setVisible(true)方法将阻止它,直到对话框被隐藏。因此,generateBtn操作侦听器应该做的是将生成的字符串存储在成员变量中,然后调用setVisible(false)。然后,start方法设置调用setVisible(true)并返回值

它看起来像这样

 public class Generator  extends JDialog {
    private String format;
    private JButton generateBtn;

    public Generator () {
        setModal(true);
        generateBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // create format string
                setVisible(false);
            }
         });
    }

    public String start() {
        setVisible(true);
        return format;
    }
 }

那没有任何意义。如果用户从不点击怎么办?您需要类似于承诺的东西。只需创建一个返回
字符串的方法,并从
actionPerformed()
方法中调用此方法:-)您不能更改
actionPerformed()
方法的签名,它是一个接口的方法,您必须在实现接口时定义它,遵守合同:-)