我正在尝试在滚动复合 SWT 中创建 2000 个文本框,但只创建了 1092 个小部件。
我在我的代码中使用网格布局,当我将布局更改为 FillLayout 时,显示的小部件数量会增加,但它又是有限的。我没有看到任何其他问题。
Display display = new Display();
Shell shell = new Shell();
shell.setText("StackOverflow");
shell.setLayout(new GridLayout(1, false));
Group first = new Group(shell, SWT.NONE);
first.setText("Group 1");
first.setLayout(new GridLayout(1, false));
GridData firstData = new GridData(SWT.FILL, SWT.FILL, true, false);
firstData.heightHint = 400;
first.setLayoutData(firstData);
ScrolledComposite firstScroll = new ScrolledComposite(first, SWT.V_SCROLL);
firstScroll.setLayout(new GridLayout(1, false));
firstScroll.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Composite firstContent = new Composite(firstScroll, SWT.NONE);
firstContent.setLayout(new GridLayout(1, false));
firstContent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
for (int i = 0; i < 2000; i++) {
Text text = new Text(firstContent, SWT.BORDER);
text.setText(i + "");
text.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
}
firstScroll.setContent(firstContent);
firstScroll.setExpandHorizontal(true);
firstScroll.setExpandVertical(true);
firstScroll.setMinSize(firstContent.computeSize(SWT.DEFAULT, SWT.DEFAULT));
shell.pack();
shell.setSize(400, shell.getSize().y);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
我想知道如何创建 n 个小部件以及我在这段代码中做错了什么... 输出图像