首页 > 解决方案 > 如何告诉 FieldEditorPreferencePage 以编程方式无效/重绘?

问题描述

我定义了一个自定义 FieldEditorPreferencePage。在 createFieldEditors 方法中,我使用自定义 FieldEditor 构造了一个简单的界面,该界面包含加载文件的按钮。当用户加载文件时,界面区域(按钮所在的位置)需要更改并显示其他特定的 gui。如何使 FieldEditorPreferencePage 无效?我使用了父复合的 layout() 方法,但没有任何反应。我在这里做错了什么?

public class MyPage extends FieldEditorPreferencePage {
    ...

    private Composite fieldEditorParent;
    private boolean fileLoaded = false;

    @Override
    protected void createFieldEditors() {

       fieldEditorParent = this.getFieldEditorParent();

       MyFieldEditor compositeFieldEditor = new MyFieldEditor(fieldEditorParent) {

        
       if(fileLoaded) {
           //draw file content
       } else {
           Button chooseButton = new Button(buttonsComposite, SWT.NONE);
           chooseButton.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
            
                    //choose file
                    fileLoaded = true;

                    //invalidate page <-- THIS DOES NOT WORK!
                    fieldEditorParent.layout(true, true);
                }
            }
       }
    }
}

标签: javalayoutswt

解决方案


推荐阅读