netbeans-platform的新手。
如何保存从一次执行到下一次执行的状态。
netbeans平台优雅地记住了我所有窗口的状态和位置。我如何向该状态添加一些我自己的数据?与Netbeans非常类似,它会保存打开的项目,并在启动时重新打开它们以及它们的状态。
Ass建议here我在我的TopComponent中添加了以下内容,但它不起作用。调用了getPersistenceType,但既未调用writeExternal n‘,也未调用readExternal。
@Override
public int getPersistenceType() {
return TopComponent.PERSISTENCE_ALWAYS;
}
@Override
public void writeExternal(ObjectOutput oo) throws IOException {
super.writeExternal(oo);
}
@Override
public void readExternal(ObjectInput oi) throws IOException, ClassNotFoundException {
super.readExternal(oi);
}评论here建议使用readProperties和writeProperties,但我觉得不太对劲。我不想存储Properties,我想存储State。
发布于 2015-10-23 17:08:51
几年前,我在一个NetBeans平台应用程序中使用了Swing应用程序框架的会话存储功能,在博客中介绍了这一点:
http://puces-blog.blogspot.ch/2009/04/netbeans-platform-meets-swing.html
以下3个类应提供与NetBeans平台的集成:
仅当您希望支持SwingX类(如JXTable )时才需要引用的XProperties和JXTable。
要在您自己的模块中使用此功能,您需要在ModuleInstall类中初始化上下文:
public class Installer extends ModuleInstall {
private static ModuleApplicationContext applicationContext;
@Override
public void restored() {
applicationContext = new ModuleApplicationContext(Modules.getModuleInfo(
Installer.class));
}
public static ModuleApplicationContext getApplicationContext() {
return applicationContext;
}
} 对于给定的图形用户界面,您可以使用以下命令存储contentPane会话状态:
Installer.getApplicationContext().getSessionStorage().save(
getContentPanel(), SESSION_STORAGE_XML); 并使用以下命令恢复状态:
Installer.getApplicationContext().getSessionStorage().
restore(getContentPanel(), SESSION_STORAGE_XML); 注意:您需要设置相关组件的组件名称
您可以在此处找到完整的示例:http://sourceforge.net/p/puces-samples/code/HEAD/tree/tags/sessionstate-1.0/
但是,还要注意的是,Swing应用程序框架(JSR-296)的开发已经撤回。
有一个叫做Better Swing Application Framework的分支,但我还没有用过它。
发布于 2016-02-17 03:01:50
我在这方面也遇到了一些问题,但最终我可以解决它。
使用@TopComponent.Description注释您的topcomponent类,并在注释中设置正确的持久性类型。您的topcomponent类必须是可序列化的,所以topcompent中的每个字段都必须是可序列化的或瞬态的。您可以使用readExtern/writeExternal实现您的自定义序列化,但这不是必需的,您可以删除它们。如果它仍然不起作用,请在关闭netbeans应用程序后查看日志,您将看到为什么平台无法序列化您的topComponent。
https://stackoverflow.com/questions/33298497
复制相似问题