gpt4 book ai didi

java - 如何使 TreeViewer 跨 ScrolledComposite

转载 作者:行者123 更新时间:2023-11-30 07:00:17 25 4
gpt4 key购买 nike

我在 SashForm 左侧有一个包含 nTree 树的对话框。每棵树都位于 ScrolledComposite 中。

我的问题是,滚动复合 Material 内部之间有太多未被树覆盖的空白空间,而且我不知道如何删除它。

这是代码:

import org.eclipse.draw2d.ColorConstants;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TreeItem;

public class SWTSashForm
{
public static void main (String [] args) {
Display display = new Display ();
Shell shell = new Shell(display);

shell.setLayout(new FillLayout());

SashForm sashForm = new SashForm(shell, SWT.HORIZONTAL);


Composite leftTablesComposite = new Composite(sashForm, SWT.NONE);
leftTablesComposite.setLayout(new GridLayout());
leftTablesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
leftTablesComposite.setBackground(ColorConstants.white);


for (int i = 0; i < 3; i++) {

Label lbl = new Label(leftTablesComposite, SWT.NONE);
lbl.setBackground(ColorConstants.white);
lbl.setText("Tree " + i);

// Configure scrolled composite
ScrolledComposite scrolledComposite = new ScrolledComposite(leftTablesComposite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
scrolledComposite.setLayout(new GridLayout());
scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
scrolledComposite.setExpandVertical(true);
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setAlwaysShowScrollBars(true);
scrolledComposite.setMinSize(leftTablesComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));

// Add content to scrolled composite
Composite scrolledContent = new Composite(scrolledComposite, SWT.NONE);
scrolledContent.setLayout(new GridLayout());
GridData gridData = new GridData();
gridData.horizontalAlignment = SWT.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.verticalAlignment = SWT.FILL;
gridData.grabExcessVerticalSpace = true;
scrolledContent.setLayoutData(gridData);
scrolledContent.setBackground(ColorConstants.white);
scrolledComposite.setContent(scrolledContent);

TreeViewer tree = new TreeViewer(scrolledContent);
for(int loopIndex0 = 0; loopIndex0 < 10; loopIndex0++) {
TreeItem treeItem0 = new TreeItem(tree.getTree(), 0);
treeItem0.setText("Level 0 Item "+ loopIndex0);

for(int loopIndex1 = 0; loopIndex1 < 10; loopIndex1++) {
TreeItem treeItem1 = new TreeItem(treeItem0, 0);
treeItem1.setText("Level 1 Item "+ loopIndex1);

for(int loopIndex2 = 0; loopIndex2 < 10; loopIndex2++) {
TreeItem treeItem2 = new TreeItem(treeItem1, 0);
treeItem2.setText("Level 2 Item "+ loopIndex2);
}
}
}

}
new TreeViewer(sashForm);
shell.open();

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

}

最佳答案

添加此行将告诉填充空间:

tree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

关于java - 如何使 TreeViewer 跨 ScrolledComposite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41043294/

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