我正在使用一个JFrame,它接受来自用户的值并将其存储在变量(filePath)中。我想在另一个类中使用此值。如何保存JFrame中的值并在另一个类中使用它?
JFrame代码:
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Specify a file to save");
int userSelection = fileChooser.showSaveDialog(this);
if (userSelection == JFileChooser.APPROVE_OPTION) {
File fileToSave = fileChooser.getSelectedFile();
String filePath = fileToSave.getAbsolutePath();
}
班级代码:
String filename="";
我想将filePath值转换为filename String。
任何帮助?
答案 0 :(得分:1)
您可以在该类中创建要保存值的静态方法。 例如
class Get {
static String filename;
public static void getValue(String value) {
filename = value;
}
}
然后从文件路径获取。
String filePath = fileToSave.getAbsolutePath();
之后调用另一个类的静态方法。例如,在我的情况下,该类是Get。
Get.getValue(filePath);
OR Crete获取字符串值的类的构造函数。
class Get {
String filename;
Get(String value) {
filename = value;
}
}
}
在创建类的对象时,将该值发送给构造函数。
Get g = new Get(filePath);
甚至更简单。在holder类中引入一个静态变量,从jframe类中将其值设置为filepath。
class Get {
static String filename;
}
然后只需将文件名的值设置为filePath,如下所示。
Get.filename = filePath;
答案 1 :(得分:0)
有几种方法可以将参数传递给另一个类。你没有说过你的问题的背景,也许你可以写更多关于它的内容。
然而,这里的方法很少:
假设您在A类中获得此字符串并希望将其传递给B类。
在类A中创建filename
变量公共属性,如果它引用了类A,则类B可以访问该属性。这可能是最糟糕的解决方案,因为B必须引用A类,B必须等待轮到获得这个属性。
更好的解决方案是实现Observer pattern,其中A是主题,B是观察者。如果您需要在从JFileChooser获取字符串后立即传递字符串,这是最佳解决方案。
另一个解决方案是将字符串存储在所有类都可以访问的Singleton对象中。
在我看来,后两种解决方案是首选的解决方案。但这一切都取决于问题的背景和应用程序的复杂性(可能没有必要使用模式使代码复杂化)。