Java swing:单击按钮时的返回值

时间:2013-08-20 16:25:30

标签: java swing button return actionlistener

我正在尝试创建一个包含按钮“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)不兼容

我如何实现我想做的事情? 我需要获得我在单击内部按钮时调用的类的值。

2 个答案:

答案 0 :(得分:2)

看起来你的Generator类是一个对话框。如果是模态对话框,则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;
    }
 }

答案 1 :(得分:0)

你不能让actionPerformed()返回一个字符串...而且我没有看到你需要的原因。我认为您可以在formatactionPerformed()执行所需的任何操作。