Java:使用首选项保存的设置在 GUI 应用程序启动时未恢复
Java: saved settings with Preferences not restored when a GUI application starts
在我的 Java 应用程序中,我有许多保存的值和设置,我希望在应用程序启动时立即获取这些值和设置。所有这些值都应该存储在一个单例中。
例如,我有一个 JDialog,我在其中使用以下命令保存我的文件的路径:
AppSingleton appSingleton = AppSingleton.getInstance( );
private Preferences prefs;
private void btnSetPanelSetNavdataActionPerformed(java.awt.event.ActionEvent evt) {
appSingleton.setNavdataPath(txtNavdataPath.getText());
prefs = Preferences.userRoot().node(this.getClass().getName());
prefs.put("NAVDATA_PATH", txtNavdataPath.getText());
dispose();
}
我正在检查,值已保存。
这是我的单身人士:
public class AppSingleton
{
private static AppSingleton instance = null;
private String navdataPath = "";
private AppSingleton()
{
}
public static AppSingleton getInstance()
{
if(instance == null)
{
instance = new AppSingleton();
}
return instance;
}
public String getNavdataPath() {
return navdataPath;
}
public void setNavdataPath(String navdataPath) {
this.navdataPath = navdataPath;
}
public void initDefaultValues()
{
Preferences prefs = Preferences.userRoot().node(this.getClass().getName());
this.navdataPath = prefs.get("NAVDATA_PATH","");
System.out.printf("CHECK DEFAULT: %s",this.navdataPath);
}
}
我正在尝试从初始化 JFrame 的 class 中的 main() 方法获取保存的值:
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run() {
new IGAMainFrame().setVisible(true);
/* HERE!!! */
AppSingleton appSingleton = AppSingleton.getInstance();
appSingleton.initDefaultValues();
}
});
}
但是这些值不是从首选项 class 初始化的。 "CHECK DEFAULT" 显示空字符串。我不明白为什么以及是否有更好的做法在 GUI 应用程序启动时恢复所有保存的值。
谢谢!
将btnSetPanelSetNavdataActionPerformed
里面的prefs = Preferences.userRoot().node(this.getClass().getName());
行改成prefs = Preferences.userRoot().node(Appsingleton.class.getName());
里面的按钮点击方法,this.getClass()
不是AppSingleton
在我的 Java 应用程序中,我有许多保存的值和设置,我希望在应用程序启动时立即获取这些值和设置。所有这些值都应该存储在一个单例中。 例如,我有一个 JDialog,我在其中使用以下命令保存我的文件的路径:
AppSingleton appSingleton = AppSingleton.getInstance( );
private Preferences prefs;
private void btnSetPanelSetNavdataActionPerformed(java.awt.event.ActionEvent evt) {
appSingleton.setNavdataPath(txtNavdataPath.getText());
prefs = Preferences.userRoot().node(this.getClass().getName());
prefs.put("NAVDATA_PATH", txtNavdataPath.getText());
dispose();
}
我正在检查,值已保存。
这是我的单身人士:
public class AppSingleton
{
private static AppSingleton instance = null;
private String navdataPath = "";
private AppSingleton()
{
}
public static AppSingleton getInstance()
{
if(instance == null)
{
instance = new AppSingleton();
}
return instance;
}
public String getNavdataPath() {
return navdataPath;
}
public void setNavdataPath(String navdataPath) {
this.navdataPath = navdataPath;
}
public void initDefaultValues()
{
Preferences prefs = Preferences.userRoot().node(this.getClass().getName());
this.navdataPath = prefs.get("NAVDATA_PATH","");
System.out.printf("CHECK DEFAULT: %s",this.navdataPath);
}
}
我正在尝试从初始化 JFrame 的 class 中的 main() 方法获取保存的值:
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run() {
new IGAMainFrame().setVisible(true);
/* HERE!!! */
AppSingleton appSingleton = AppSingleton.getInstance();
appSingleton.initDefaultValues();
}
});
}
但是这些值不是从首选项 class 初始化的。 "CHECK DEFAULT" 显示空字符串。我不明白为什么以及是否有更好的做法在 GUI 应用程序启动时恢复所有保存的值。
谢谢!
将btnSetPanelSetNavdataActionPerformed
里面的prefs = Preferences.userRoot().node(this.getClass().getName());
行改成prefs = Preferences.userRoot().node(Appsingleton.class.getName());
里面的按钮点击方法,this.getClass()
不是AppSingleton