swt - 如何在 SWT 中更新 PageBook 控件
问题描述
我目前正在使用 PageBook 控件来根据用户的操作显示不同的页面。
以下是上述 WizardPage 的简要来源:
override createControl(Composite parent) {
var composite = new Composite(parent, SWT.NONE) as Composite;
composite.setLayout(new GridLayout())
createSelectDomainFileGroup(composite);
createDomainGroup(composite);
pageBook(composite)
setControl(composite)
}
我在此方法中添加了 pageBook(composite),因为我认为调用类时要调用的第一个方法 createControl() 最初应该指定所有区域。
这就是我希望它的工作方式。
- 选中“使用域自定义”复选框。
- 然后“选择文件”按钮被激活。
- 单击“选择文件”按钮并选择 Excel(.xls、.xlsx)文件的扩展名。
- 通过内部逻辑检查选中的文件是否损坏。
- 如果是普通文件,则在 PageBook 中更新所需的值。
pageBook 在以下条件下显示。
if (isValidExcelFile()) {
Display.^default.asyncExec([
setMessage(MessageFormat.format(Messages.ChooseDomainFileWizardPage_9, domainFileName));
domainFileNameText.setText(domainFileName);
setPageComplete(true);
workbook = this.workbook
pagebook.showPage(sheetPage)
])
this.option.setExcelFile(true);
}
<< Modified >> sheetPage 创建如下。
def pageBook(Composite parent) {
var container = parent as Composite
container.Composite [
new Composite(parent, SWT.NORMAL) => [
layoutData = FILL_HORIZONTAL[]
layout = GridLayout
pagebook = PageBook[
layout = GridLayout
layoutData = FILL_HORIZONTAL[]
]
]
]
// sheetPage
sheetPage = pagebook.Composite [
layout = GridLayout[
numColumns = 2
marginWidth = 0
marginHeight = 0
makeColumnsEqualWidth = false
]
layoutData = FILL_HORIZONTAL
new Label(it, SWT.NORMAL) => [
text = Messages.ChooseDomainFileWizardPage_12
]
..... more source
<< 修改>> Pagebook 调用如下:
if (domainFileName.nullOrEmpty) {
return;
} else if (domainFileName.toLowerCase.endsWith(".xls") || domainFileName.toLowerCase.endsWith(".xlsx")) {
this.option.filename = domainFileName;
if (isValidExcelFile()) {
Display.^default.asyncExec([
setMessage(MessageFormat.format(Messages.ChooseDomainFileWizardPage_9, domainFileName));
domainFileNameText.setText(domainFileName);
setPageComplete(true);
workbook = this.workbook
pagebook.showPage(sheetPage)
])
this.option.setExcelFile(true);
.... more source
但是,无法正确显示所需的值。在我看来,由于我在第一个 createControl() 上做了 pageBook(Composite).. 我认为 pageBook 区域中的控件显示了,但值没有更新。
我想知道如何刷新已经加载的pageBook控件的屏幕。
解决方案
推荐阅读
- ios - 如何修复“颤振:DatabaseException(open_failed ...)”?
- python - hog 特征输出数组返回很少的值
- javascript - 如何使 JavaScript 单选按钮在新窗口中打开?
- ios - Database.database().reference() 为零
- swift - 从 ARKit 3 中的 3D Skeleton 检索骨骼旋转
- javascript - 无法将属性“max-content”添加到 @key-frames
- android - 写入存储打开失败时出错:android中的ENOENT(没有这样的文件或目录)
- soapui - 如何在 SOAP UI 中使用正则表达式断言
- php - 无法打开 FPDF 使用 Adobe Reader 生成 PDF
- c - 用 sizeof() 比较多维数组