gpt4 book ai didi

java - 如何在 ScrolledComposite 中显示多行文本?

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:29 27 4
gpt4 key购买 nike

我在 ScrolledComposite 中有一个 StyledText 小部件 (SWT),它应该显示日志文件的内容。不幸的是,日志文件中有数千行,因此我发现小部件在大约 2200 行后切断了文本。

我找到了this post指的是 this report这表明窗口中的小部件有高度限制,我的理论是我已经达到了该限制。

我的问题是我该如何处理这个问题。显示包含这么多行的文本的解决方法是什么?

编辑:
我发现只有当我在 ScrolledComposite 中使用 StyledText 时,才会发生这种情况。如果我使用纯 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.Display;
import org.eclipse.swt.widgets.Shell;

public class StyledTextLimit {

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

ScrolledComposite scrollComp = new ScrolledComposite(shell,
SWT.H_SCROLL | SWT.V_SCROLL);

StyledText text = new StyledText(scrollComp, SWT.NONE);
text.setSize(100, 500);

scrollComp.setContent(text);
scrollComp.setExpandHorizontal(true);
scrollComp.setExpandVertical(true);

StringBuilder builder = new StringBuilder();

for (int i = 0; i < 5000; i++) {
builder.append(i);

builder.append(" ");

for (int j = 'a'; j < 'a' + 200; j++) {
builder.append((char) j);
}

builder.append("\n");
}

text.setText(builder.toString().trim());

scrollComp.setMinSize(text.computeSize(SWT.DEFAULT, SWT.DEFAULT));


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

}

最佳答案

我认为没有必要将 StyledText 包装到 ScrolledComposite 中。 StyledText 在必要时自行显示滚动条。

我建议使用 StyledText 而不使用 ScrolledComposite

StyledText 当然也对其能够容纳的文本有限制。但是,此限制应远高于 2200 行。如果 StyledText 仍然溢出,那么您必须截断要显示的日志。

关于java - 如何在 ScrolledComposite 中显示多行文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39455187/

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