【发布时间】:2017-06-01 16:11:40
【问题描述】:
我有一个 Eclipse 插件应用程序(十年前的代码,没有文档等)掉在我的腿上,在向它添加新功能时,我注意到当面板调整大小时,文本框会发生变化在拖动分隔符的同时不断调整大小。
正如您在第二张图片中看到的那样,文本框的大小是随机的。 SWT 中是否有防止这种情况发生的设置?
以下是我创建其中一个文本框的方式。其他的基本上是这个的克隆:
Font font = parent.getFont();
setLayout(new FillLayout());
SashForm sashForm = new SashForm(this, SWT.VERTICAL);
FormToolkit toolkit = new FormToolkit(getParent().getDisplay());
Section section = toolkit.createSection(sashForm,
Section.DESCRIPTION | ExpandableComposite.TITLE_BAR | ExpandableComposite.EXPANDED);
section.setLayoutData(new GridData(GridData.FILL_BOTH));
section.setLayout(new GridLayout());
section.setText("Section Title");
Composite controlComposite = toolkit.createComposite(section);
GridLayout controlLayout = new GridLayout();
controlLayout.numColumns = 2;
controlLayout.verticalSpacing = 20;
controlComposite.setLayout(controlLayout);
section.setClient(controlComposite);
Font bold = ResourceManager.getBoldFont(font);
Label textLabel = toolkit.createLabel(controlComposite, "Title:", SWT.BOLD);
GridData gd = new GridData();
gd.horizontalSpan = 1;
textLabel.setLayoutData(gd);
textLabel.setFont(bold);
textBox = new ExtendedText(controlComposite, SWT.BORDER | SWT.SINGLE, false);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 1;
gd.verticalSpan = 2;
textBox.setLayoutData(gd);
ExtendedText 类是 StyledText 的扩展。它的重要部分是:
GridData gd_bg = new GridData(GridData.FILL_BOTH);
setLayoutData(gd_bg);
final GridLayout gridLayout = new GridLayout();
gridLayout.verticalSpacing = 0;
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
gridLayout.horizontalSpacing = 0;
gridLayout.numColumns = 1;
gridLayout.makeColumnsEqualWidth = true;
sashForm.setWeights(new int[] { 1, 1 });
【问题讨论】:
-
您需要发布用于创建
Text对象的代码,如果有处理调整大小的代码,您也需要发布该代码。 -
好点。我一会儿更新
-
你真的需要给我们看minimal reproducible example,因为这样的代码是不够的。例如,最后一个
gridLayout不做任何事情,除非它在某处设置为控件的布局。您似乎有一个 ViewPart 包含一个表单,并且从外观上看它是否是一个部分。这里有很多互动无法从您展示的内容中确定。 -
我必须小心我发布的代码(对专有信息的引用)。我会看看我能做什么。
-
@ChrisClark 正如前面提到的那样,它必须是 MCVE,即尝试在独立的 SWT 应用程序中重现您的问题。包含尽可能少的代码,但尽可能多地包含。
标签: java layout eclipse-plugin swt