Java 为什么在使用ScrolledComposite SWT时,标签项上的小部件是不可见的?

Java 为什么在使用ScrolledComposite SWT时,标签项上的小部件是不可见的?,java,swt,scrollbar,Java,Swt,Scrollbar,这是我的代码,它实际上完成了域的所有GUI工作(附件图片的右侧)。在这个函数中,我所做的是在“newTabFolder”上创建一个复合“test”。然后我在其上创建Scrolled复合“sc”,然后在其上创建一个复合“compositeInTab”,并在将所有小部件放置在“compositeInTab”我正在创建一个选项卡项,用于在其上放置复合“测试” public DomainUI(复合复合,TabFolder newTabFolder,boolean comingFromSelf) { 复合

这是我的代码,它实际上完成了域的所有GUI工作(附件图片的右侧)。在这个函数中,我所做的是在“newTabFolder”上创建一个复合“test”。然后我在其上创建Scrolled复合“sc”,然后在其上创建一个复合“compositeInTab”,并在将所有小部件放置在“compositeInTab”我正在创建一个选项卡项,用于在其上放置复合“测试”

public DomainUI(复合复合,TabFolder newTabFolder,boolean comingFromSelf)
{
复合测试=新复合材料(newTabFolder,SWT.NONE);
test.setLayout(新的FillLayout());
ScrolledComposite sc=新的ScrolledComposite(测试,SWT.V|U SCROLL | SWT.H|U SCROLL);
最终复合材料InTab=新复合材料(sc、SWT.无);
sc.setExpandHorizontal(真);
sc.setExpandVertical(真);
sc.setMinHeight(computeInTab.computeSize(SWT.DEFAULT,SWT.DEFAULT).y);
sc.setMinWidth(computeInTab.computeSize(SWT.DEFAULT,SWT.DEFAULT).x);
sc.setContent(compositeInTab);
compositeInTab.setLayout(空);
sc.setAlwaysShowScrollBars(真);
/*在这里,我创建标签和文本字段并设置它们的边界*/
systemCodeLabel=新标签(compositeInTab,0);
systemCodeText=新文本(compositeInTab,SWT.BORDER);
systemCodeLabel.setText(“系统代码”);
systemCodeLabel.setBounds(350,60,100,15);
systemCodeText.setBounds(480,60,150,17);
//标签和文本字段的创建已结束
//开始创建表
myTable=新的CreateTable(compositeInTab,1);
myTable.setBounds(50230,0,0);
myTable.table.setSize(myTable.table.computeSize(570250));
//这里我在表格中填写了数据

对于(int i=0;i来说,这似乎是布局的问题。我稍微摆弄了一下,并设法让它工作起来:

public static void main(String[] args)
{
    Display display = Display.getDefault();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    ScrolledComposite scrollComp = new ScrolledComposite(shell, SWT.V_SCROLL | SWT.H_SCROLL);
    Composite innerComp = new Composite(scrollComp, SWT.NONE);
    innerComp.setLayout(new GridLayout(4, true));

    for(int i = 0; i < 32; i++)
        new Button(innerComp, SWT.PUSH).setText("Button");

    scrollComp.setMinHeight(innerComp.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
    scrollComp.setMinWidth(innerComp.computeSize(SWT.DEFAULT, SWT.DEFAULT).x);
    scrollComp.setContent(innerComp);
    scrollComp.setExpandHorizontal(true);
    scrollComp.setExpandVertical(true);
    scrollComp.setAlwaysShowScrollBars(true);

    shell.pack();
    shell.open();

    shell.setSize(200, 200);

    while(!shell.isDisposed())
    {
        if(!display.readAndDispatch())
            display.sleep();
    }
}
publicstaticvoidmain(字符串[]args)
{
Display=Display.getDefault();
外壳=新外壳(显示);
setLayout(新的FillLayout());
ScrolledComposite scrollComp=新的ScrolledComposite(shell,SWT.V|u SCROLL | SWT.H|u SCROLL);
Composite innerComp=新复合(scrollComp,SWT.NONE);
innerComp.setLayout(新的GridLayout(4,true));
对于(int i=0;i<32;i++)
新按钮(内置组件,SWT.PUSH).SETEXT(“按钮”);
scrollComp.setMinHeight(innerComp.computeSize(SWT.DEFAULT,SWT.DEFAULT).y);
scrollComp.setMinWidth(innerComp.computeSize(SWT.DEFAULT,SWT.DEFAULT).x);
滚动组件设置内容(内部组件);
滚动组件设置水平扩展(真);
scrollComp.setExpandVertical(真);
scrollComp.setAlwaysShowScrollBars(真);
shell.pack();
shell.open();
外壳。设置尺寸(200200);
而(!shell.isDisposed())
{
如果(!display.readAndDispatch())
display.sleep();
}
}

它将显示滚动条。但是,如果我将shell的布局更改为
GridLayout
,它将不起作用。也许布局的“组合”似乎是问题所在…

当我将test的布局设置为FillLayout()时,我的代码起作用了:)@MubashirKamran很好。玩得开心:)但是你能告诉我还有两个问题吗?第一个是滚动条现在正在显示,但是它们不能滚动以显示其他数据,第二个是当我增加newTabFolder边界时,它会离开屏幕,然后所有的小部件和滚动条也会离开屏幕。怎么办o管理这些?@MubashirKamran我真的不明白你的问题。你能提供一个屏幕截图吗?谢谢你的时间。我只是误解并错误地使用了scrolledcomposite.setMinSize()、scrolledcomposite.setMinWidth()和scrolledcomposite.setMinHeight()方法。现在我的合成图上有了功能齐全的滚动条。:)
public static void main(String[] args)
{
    Display display = Display.getDefault();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    ScrolledComposite scrollComp = new ScrolledComposite(shell, SWT.V_SCROLL | SWT.H_SCROLL);
    Composite innerComp = new Composite(scrollComp, SWT.NONE);
    innerComp.setLayout(new GridLayout(4, true));

    for(int i = 0; i < 32; i++)
        new Button(innerComp, SWT.PUSH).setText("Button");

    scrollComp.setMinHeight(innerComp.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
    scrollComp.setMinWidth(innerComp.computeSize(SWT.DEFAULT, SWT.DEFAULT).x);
    scrollComp.setContent(innerComp);
    scrollComp.setExpandHorizontal(true);
    scrollComp.setExpandVertical(true);
    scrollComp.setAlwaysShowScrollBars(true);

    shell.pack();
    shell.open();

    shell.setSize(200, 200);

    while(!shell.isDisposed())
    {
        if(!display.readAndDispatch())
            display.sleep();
    }
}