gpt4 book ai didi

java - ScrolledComposite JFace 对话框中没有滚动条

转载 作者:行者123 更新时间:2023-12-02 04:20:36 28 4
gpt4 key购买 nike

我当前正在尝试扩展 JFace 对话框以包含 scrolledComposite。我的代码目前如下所示:

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class MWE extends MessageDialog {

public static void main(String[] args) {
Dialog d = new MWE(new Display().getActiveShell());
d.open();
}

public MWE(Shell parentShell) {
super(parentShell, "MWE", null, "",
MessageDialog.ERROR, new String[] { "OK" }, 0);
}

@Override
public Control createDialogArea(Composite parent) {
ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.setMinSize(300, 300);
Composite content = new Composite(sc, SWT.NONE);
sc.setContent(content);
content.setLayout(new GridLayout());
for (int i = 0; i < 100; i++) {
Label l = new Label(content, SWT.NONE);
l.setText("lorem ipsum");
}
return parent;
}
}

问题是,像这样窗口的大小只是跨越整个屏幕高度,而不是在超过一定大小时可以滚动。如果内容超出大小,如何滚动?

最佳答案

ScrolledComposite 的布局数据中设置 heightHint:

GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.heightHint = 500;
sc.setLayoutData(data);

使用计算出的内容大小作为最小大小:

sc.setMinSize(content.computeSize(SWT.DEFAULT, SWT.DEFAULT));

(在将所有内容添加到 content 后执行此操作)

关于java - ScrolledComposite JFace 对话框中没有滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32814028/

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