java - 如何使用 JAVA、SWT 在我的 UI 上显示滚动?

标签 java user-interface swt scrolledcomposite

我正在尝试使用 SWT 将 ScrolledComposite 放在我的 UI 上。 但现在它只显示空白区域或错误的内容。

显示 ScrolledComposite 的区域是空白的,没有代码, “optionCompositeAtLeft.setSize(optionCompositeAtLeft.computeSize(SWT.DEFAULT,SWT.DEFAULT));”

这是屏幕截图。 optionTab 应该有带有 Scroll... 的按钮 enter image description here

通过代码,它显示滚动,但高度太长,宽度太窄。 不知何故,上部消失了,但是当我扩展窗口大小且滚动消失时又回来了。

enter image description here

我将背景颜色设置为红色,以便您更容易看到。 谁能帮我将“optionCompositeAtLeft”填充为ScrolledComposite? 我希望选项选项卡的左侧区域填充“optionCompositeAtLef”的红色背景。

下面是我的代码。

private BomCloneDialog dialog = null;
private TabFolder tabFolder = null;
private TabItem tabOption = null;

public CreateOptionTab(TabFolder tabFolder, TabItem tabOption) {
    this.tabFolder = tabFolder;
    this.tabOption = tabOption;
}

public void createOptionTabUI() {
    GridData gdWithFillBoth = new GridData(GridData.FILL_BOTH);

    Composite optionComposite = new Composite(tabFolder, SWT.NONE);
    optionComposite.setLayout(new GridLayout(2, true));
    tabOption.setControl(optionComposite);

    ScrolledComposite scrolledCompositeForOption = new ScrolledComposite(optionComposite,SWT.V_SCROLL | SWT.BORDER);
    scrolledCompositeForOption.setLayoutData(gdWithFillBoth);

    Composite optionCompositeAtLeft = new Composite(scrolledCompositeForOption, SWT.BORDER);
    scrolledCompositeForOption.setContent(optionCompositeAtLeft);
    optionCompositeAtLeft.setLayout(new GridLayout(1, true));
    optionCompositeAtLeft.setLayoutData(gdWithFillBoth);
    optionCompositeAtLeft.setBackground(new Color(Display.getCurrent(), 255,0,0));

    Button b [] = new Button[30];
    for(int a=0; a<30; a++){
        b[a] = new Button(optionCompositeAtLeft, SWT.PUSH);
        b[a].setText("button"+a);
    }
    **optionCompositeAtLeft.setSize(optionCompositeAtLeft.computeSize(SWT.DEFAULT, SWT.DEFAULT));**




    Composite optionButtonComposite = new Composite(optionComposite, SWT.BORDER);
    optionButtonComposite.setLayout(new GridLayout(1, true));
    optionButtonComposite.setLayoutData(gdWithFillBoth);
    Button optionSaveButton = new Button(optionButtonComposite, SWT.NONE);
    optionSaveButton.setLayoutData(gdWithFillBoth);
    optionSaveButton.setText("Save");
    Button optionAddButton = new Button(optionButtonComposite, SWT.NONE);
    optionAddButton.setLayoutData(gdWithFillBoth);
    optionAddButton.setText("Add");

}

最佳答案

您需要配置 ScrolledComposite 来调整内容大小:

scrolledCompositeForOption.setExpandHorizontal(true);
scrolledCompositeForOption.setExpandVertical(true);

Filled Background

关于java - 如何使用 JAVA、SWT 在我的 UI 上显示滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44001881/

相关文章:

java - 在 SWT 中使用 Maven tycho-p2-plugin

java - 为什么 EclEmma 不涵盖 syncronized(MyClass.class)?

java - 向 PDF 添加时间戳会损坏文件

java - 读取 FileItem 对象的最佳模式

java - 在android中逐行读取文件后如何在UI上显示SetText值?

java - 32 位和 64 位 SWT 之间的性能差异是什么?

java - 在android中编辑简单列表中的文本

JavaFX 在一个场景中有多个 Pane ?

c# - GUI 设计 : Hide/Show controls at run time

java - 如何给TabItem添加滚动条?