gpt4 book ai didi

java - SWT StyledText 有高度限制吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:01 25 4
gpt4 key购买 nike

我正在尝试创建一个包含在 ScrolledComposite 中显示的 StyledText 框的应用程序。我在我的 StyledText 框中显示大量行时遇到困难(超过 2,550 行似乎会导致问题)。

StyledText 框本身不能有滚动条,但必须可以通过 ScrolledComposite 滚动。由于 StyledText 下方和上方还有其他项目需要滚动到并且我不想要多个滚动条。

因此,对于大量数据,我有一个非常大(如高度)的 StyledText 框,它似乎在一定高度后停止。

Screenshot

问题是 StyledText 应该与其内容一样高,但事实并非如此。下面出现间隙的原因是包含复合 Material 正在调整 StyledText 报告的高度,但这实际上不是它的高度。

这是一段简化的示例代码来说明我的问题:

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;


public class ExpandBox2
{
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Example");
shell.setLayout(new FillLayout());

ScrolledComposite scrolledComposite = new ScrolledComposite(shell, SWT.V_SCROLL);
scrolledComposite.setLayout(new FillLayout(SWT.VERTICAL));

Composite mainComp = new Composite(scrolledComposite, SWT.NONE);
mainComp.setLayout(new FillLayout(SWT.VERTICAL));

StyledText styledText = new StyledText(mainComp, SWT.NONE);
styledText.getContent().setText(bigString());

mainComp.setSize(mainComp.computeSize(SWT.DEFAULT, SWT.DEFAULT));

scrolledComposite.setContent(mainComp);
scrolledComposite.setMinSize(mainComp.computeSize(SWT.DEFAULT, SWT.DEFAULT));
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
scrolledComposite.getVerticalBar().setIncrement(10);


shell.setSize(400, 350);
shell.open();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) {
display.sleep ();
}
}
display.dispose();

}

private static String bigString()
{
String big = "";

for(int i=0;i<10000;i++)
{
big = big + "hello\r\n";
}

return big;
}

}

更新:有趣的是,这个问题出现在 SWT 标签和 SWT 文本上

最佳答案

这实际上是 Windows 的限制。复合 Material 在 Windows 中可能只有特定大小,不超过 32767(像素,我假设)。

这是为 scrolledComposite 找到的,因为它实际上不是 > 32767,它只是看起来是。而对于 mainComp,实际大小 > 32767,这就是我们被切断的地方。

最初我认为这是一个 Eclipse 错误并提交了一份报告,我被告知这是一个 Windows 问题/功能:https://bugs.eclipse.org/bugs/show_bug.cgi?id=333111

关于java - SWT StyledText 有高度限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4510579/

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