0
我有一個Eclipse插件應用程序(十年前的代碼,沒有文檔等)丟在我的腿上,同時向它添加新功能時,我注意到當面板是調整大小後,文本框會在拖動分隔符時連續更改大小。 Eclipse SWT文本框更改大小
正如你可以在第二圖片中看到,該文本框是一種隨機大小。 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'對象的代碼,如果有一個處理調整大小,你需要的代碼也發佈這一點。 – Baz
好點。我會更新一下 –
你真的要給我們看一個[mcve],因爲這樣的代碼是不夠的。例如,最後一個'gridLayout'不會做任何事情,除非它被設置爲某個控件的佈局。您似乎有一個ViewPart包含一個表單,並從外觀看它是否爲Section。這裏有很多互動,不能從你所展示的內容來確定。 –