我正在使用一个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.
帮忙吗?
您可以在想要保存值的类中创建一个静态方法。如:
class Get {
static String filename;
public static void getValue(String value) {
filename = value;
}
}
当你从。
得到文件路径后String filePath = fileToSave.getAbsolutePath();
之后调用另一个类的静态方法。例如,在我的例子中,这个类是Get。
Get.getValue(filePath);
或者创建一个类的构造函数,它可以获取一个字符串值。
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;
有几种方法可以将参数传递给另一个类。你没有说太多关于你的问题的背景,也许你可以多写一点。
然而,这里有一些方法:
假设你在类A中获得了这个字符串并想将它传递给类b。
使filename
变量在类A中成为公共属性,这样类B就可以访问它,如果它引用了类A。这可能是最糟糕的解决方案,因为B必须引用类A,而B必须等待轮到它获取这个属性。
更好的解决方案是实现观察者模式,其中A是主体,B是观察者。这是最好的解决方案,如果你需要传递字符串后,立即从JFileChooser。
另一个解决方案是将字符串存储在所有类都可以访问的单例对象中。
在我看来,后两种解决方案是更可取的。但这完全取决于问题的上下文和应用程序的复杂性(也许没有必要用模式来使代码复杂化)。