Java swing:单击按钮时返回值
我试图创建一个包含按钮“generate”的方法,该按钮允许您在每次单击按钮时向方法的调用类返回一个值(字符串或任何内容)。 我试着这样做: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
//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()
方法的签名,它是一个接口的方法,您必须在实现接口时定义它,遵守合同:-)