gpt4 book ai didi

java - Eclipse SWT ScrolledComposite 拒绝滚动

转载 作者:行者123 更新时间:2023-12-02 09:19:39 26 4
gpt4 key购买 nike

我正在为 eclipse 开发一个插件,我正在努力使用 ScrolledComposite 以及让它占用剩余空间。

父布局是一个 2 列网格:

@Override
public void createPartControl(Composite parent) {
parent.setLayout(new GridLayout(2, false));
// other views etc
}

ScrolledComposite 的创建方式如下(略有缩写):

private void fillScroll() {
if (scroll != null) {
scroll.dispose();
}
scroll = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);

GridData gd = new GridData();
gd.horizontalSpan = 2;
scroll.setLayoutData(gd);

Composite innerContainer = new Composite(scroll, 0);
innerContainer.setLayout(new GridLayout(1, false));

// for loop that adds widgets to innerContainer

scroll.setExpandHorizontal(true);
scroll.setExpandVertical(true);
scroll.setContent(innerContainer);
scroll.setSize(innerContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT));

parent.layout(true);
}

Picture of resulting layout

问题列表是在 for 循环中添加的小部件,并包含在 innerContainer 中。

期望:由于 innerContainer 太大而无法放入父容器中,因此应该有滚动条。

实际发生的情况:没有滚动条。

如何解决这个问题?

最佳答案

  1. GridData关于ScrolledComposite需要有grabExcessVerticalSpace设置为true 。我建议您使用扩展构造函数,以便清楚地定义它应该如何显示,例如:

    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
  2. 选项 A:更改 scroll.setSizescroll.setMinSize :

    scroll.setMinSize(innerContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT));

    或者,选项 B:删除 scroll.setExpandHorizontalscroll.setExpandVertical并更改scroll.setSizeinnerContainer.setSize :

    innerContainer.setSize(innerContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT));

关于java - Eclipse SWT ScrolledComposite 拒绝滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com