Java 我需要帮助才能回来
我正在制作我的第一个GUI程序,遇到了一个小问题。我需要返回字符串值,以便在方法“saying”中使用它。这部分是一个子类-在另一个类中构建的类。。 错误返回值;获取的是:void方法不能返回值。我知道我必须用什么来取代空虚??问候奥利弗Java 我需要帮助才能回来,java,return,return-value,Java,Return,Return Value,我正在制作我的第一个GUI程序,遇到了一个小问题。我需要返回字符串值,以便在方法“saying”中使用它。这部分是一个子类-在另一个类中构建的类。。 错误返回值;获取的是:void方法不能返回值。我知道我必须用什么来取代空虚??问候奥利弗 private class Eventhandler implements ActionListener{ double amount; public void actionPerformed(ActionEvent event){
private class Eventhandler implements ActionListener{
double amount;
public void actionPerformed(ActionEvent event){
String string = "";
String string1 = "";
if(event.getSource()==item1)
string=String.format(event.getActionCommand());
else if(event.getSource()==item2)
string1=String.format(event.getActionCommand());
JOptionPane.showMessageDialog(null, string);
double fn = Double.parseDouble(string);
double sn = Double.parseDouble(string1);
double amount = fn + sn;
String value = Double.toString(amount);
return value;
}
}
public void saying(){
System.out.println(value);
}
}正如其他人所说,您不能从
actionPerformed
返回任何内容,因为这是在ActionListener
界面中指定的。即使可以,它也不会对您有任何好处,因为您不是调用actionPerformed
函数的人
您要做的是以某种方式给父类值
。一种方法是将value
作为父类上的字段。然后,您可以通过actionPerformed
功能进行设置:
private class ParentClass {
private String value;
//... stuff ...
private class Eventhandler implements ActionListener{
double amount;
public void actionPerformed(ActionEvent event){
//... stuff ...
ParentClass.this.value = Double.toString(amount);
}
}
public void saying(){
System.out.println(value);
}
}
请注意,您不能在内部类中执行this.value=value
,因为该函数中的this
引用了Eventhandler
实例。您必须使用父类的this
语法来获取父类的this
。用父类的实际名称替换父类
更好的方法可能是在父类上有一个
setValue()
函数,内部Eventhandler
类调用该函数。这取决于您想做什么。正如其他人所说,您不能从actionPerformed
返回任何内容,因为这是在ActionListener
界面中指定的。即使可以,它也不会对您有任何好处,因为您不是调用actionPerformed
函数的人
您要做的是以某种方式给父类值
。一种方法是将value
作为父类上的字段。然后,您可以通过actionPerformed
功能进行设置:
private class ParentClass {
private String value;
//... stuff ...
private class Eventhandler implements ActionListener{
double amount;
public void actionPerformed(ActionEvent event){
//... stuff ...
ParentClass.this.value = Double.toString(amount);
}
}
public void saying(){
System.out.println(value);
}
}
请注意,您不能在内部类中执行this.value=value
,因为该函数中的this
引用了Eventhandler
实例。您必须使用父类的this
语法来获取父类的this
。用父类的实际名称替换父类
更好的方法可能是在父类上有一个
setValue()
函数,内部Eventhandler
类调用该函数。这取决于您想做什么。您可以创建一个实例变量,并可以在下面的actionPerformed
方法中初始化它
private class Eventhandler implements ActionListener{
String value=''
public void actionPerformed(ActionEvent event){
value="newvalue";
// rest code goes here
}
}
您不能更改api定义方法的返回类型您可以创建一个实例变量,并可以在下面的
actionPerformed
方法中初始化它
private class Eventhandler implements ActionListener{
String value=''
public void actionPerformed(ActionEvent event){
value="newvalue";
// rest code goes here
}
}
除非在程序的其他地方需要字符串值,否则无法更改api定义方法的返回类型: 替换
public void saying(){
System.out.println(value);
}
与
然后改变
return value;
到
除非您需要程序中其他地方的字符串值: 替换
public void saying(){
System.out.println(value);
}
与
然后改变
return value;
到
如果要覆盖
actionPerformed
方法,则不能。方法的返回类型必须为void.public字符串actionPerformed(ActionEvent事件){}@Dimentar您不能这样做。你读过这里的其他答案了吗?在其他答案之前发布,之后重新加载页面如果你想覆盖actionPerformed
方法,你不能。方法的返回类型必须为void.public字符串actionPerformed(ActionEvent事件){}@Dimentar您不能这样做。你读过这里的其他答案了吗?在其他答案之前发布,之后重新加载页面