SWT FileDialog 浏览位置
SWT FileDialog Browse Location
我的 RCP 应用程序中有一个简单的文件对话框,它允许用户根据下面的代码片段 select 一个文件
Label filePathLabel = new Label(composite, SWT.NULL);
filePathLabel.setText("File Path");
Text filePathText = new Text(composite, SWT.BORDER);
filePathText.setText("");
Button browseButton = new Button(composite, SWT.PUSH);
FileDialog fileDialog = new FileDialog(getShell(), SWT.SAVE);
fileDialog.setFilterExtensions(new String[] {"*.txt"});
fileDialog.setFilterNames(new String[] {"Textfiles(*.txt)"});
browseButton.addSelectionListener(new SelectionAdapter()
{
@override
public void widgetSelected(final SelectionEvent e)
{
String path = fileDialog.open();
if(path != null && !path.isEmpty())
{
filePathText.setText(path);
}
}
});
我面临的问题是,在关闭我的 RCP 应用程序并再次启动它后,我无法获取文件的先前浏览位置,因为所有控件(文本、文件对话框)都将被重新创建。我保存 fileDialog.open
的结果,其中 returns 路径并在我的 WizardPage
重新打开时设置 filePathText
文本控件的 setText(Text text)
方法以显示以前的浏览位置 selected 但我在关闭 RCP 应用程序后失去了对浏览位置的访问权限,所以下次我重新打开我的应用程序时,我无法将 filePathText
文本设置为以前浏览的位置 即使 Eclipse 在我单击浏览按钮后确实指向以前浏览过的位置,但我什至在单击浏览按钮之前就需要知道以前浏览过的位置,以便它可以显示在 Text
控制。
我在这个网站上找到了一些建议 - https://dzone.com/articles/remember-state 但我认为这不会帮助我记住关于 FileDialog
的浏览位置的状态
如有遗漏请指正。
您使用link中提到的IDialogSettings
来保存和恢复信息的精灵。向导提供了一些方法来提供帮助。
在主 Wizard
class 的构造函数中设置向导应使用的对话框设置。这可能是:
public MyWizard()
{
setDialogSettings(Activator.getDefault().getDialogSettings());
}
其中 Activator
是您插件的激活器(这仅在激活器扩展 AbstractUIPlugin
时有效)。
完成此操作后,您的 WizardPage
可以访问设置:
IDialogSettings settings = getDialogSettings()
当文件对话框 returns 您可以在设置中保存的位置:
settings.put("path", path);
创建文件路径时Text
您可以检查是否有保存的值:
String savedPath = settings.get("path");
if (savedPath != null) {
filePathText.setText(savedPath);
}
我的 RCP 应用程序中有一个简单的文件对话框,它允许用户根据下面的代码片段 select 一个文件
Label filePathLabel = new Label(composite, SWT.NULL);
filePathLabel.setText("File Path");
Text filePathText = new Text(composite, SWT.BORDER);
filePathText.setText("");
Button browseButton = new Button(composite, SWT.PUSH);
FileDialog fileDialog = new FileDialog(getShell(), SWT.SAVE);
fileDialog.setFilterExtensions(new String[] {"*.txt"});
fileDialog.setFilterNames(new String[] {"Textfiles(*.txt)"});
browseButton.addSelectionListener(new SelectionAdapter()
{
@override
public void widgetSelected(final SelectionEvent e)
{
String path = fileDialog.open();
if(path != null && !path.isEmpty())
{
filePathText.setText(path);
}
}
});
我面临的问题是,在关闭我的 RCP 应用程序并再次启动它后,我无法获取文件的先前浏览位置,因为所有控件(文本、文件对话框)都将被重新创建。我保存 fileDialog.open
的结果,其中 returns 路径并在我的 WizardPage
重新打开时设置 filePathText
文本控件的 setText(Text text)
方法以显示以前的浏览位置 selected 但我在关闭 RCP 应用程序后失去了对浏览位置的访问权限,所以下次我重新打开我的应用程序时,我无法将 filePathText
文本设置为以前浏览的位置 即使 Eclipse 在我单击浏览按钮后确实指向以前浏览过的位置,但我什至在单击浏览按钮之前就需要知道以前浏览过的位置,以便它可以显示在 Text
控制。
我在这个网站上找到了一些建议 - https://dzone.com/articles/remember-state 但我认为这不会帮助我记住关于 FileDialog
如有遗漏请指正。
您使用link中提到的IDialogSettings
来保存和恢复信息的精灵。向导提供了一些方法来提供帮助。
在主 Wizard
class 的构造函数中设置向导应使用的对话框设置。这可能是:
public MyWizard()
{
setDialogSettings(Activator.getDefault().getDialogSettings());
}
其中 Activator
是您插件的激活器(这仅在激活器扩展 AbstractUIPlugin
时有效)。
完成此操作后,您的 WizardPage
可以访问设置:
IDialogSettings settings = getDialogSettings()
当文件对话框 returns 您可以在设置中保存的位置:
settings.put("path", path);
创建文件路径时Text
您可以检查是否有保存的值:
String savedPath = settings.get("path");
if (savedPath != null) {
filePathText.setText(savedPath);
}