gpt4 book ai didi

java - Eclipse插件: Show window with scrollable text

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

在 Eclipse 插件中,我尝试向用户显示一个仅包含长文本的对话框。该文本应该是可滚动的。

我尝试过:

protected Control createDialogArea(Composite parent)
{
Composite container = (Composite) super.createDialogArea(parent);
Text text = new Text(container, SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL| SWT.MULTI);

text.setText(" " + command + "\n\r\n\r" + result);

return container;
}

然后显示的文本带有禁用的滚动条(尽管它比窗口的大小大)。如何启用滚动?

最佳答案

问题似乎是,文本上的布局数据不受限制。因此,SWT 似乎不知道何时启用滚动。

设置 griddata 来填充两者对我来说对你的代码不起作用(刚刚尝试过)。

但是,这将:

public static void main(String[] args) {

Display display = Display.getDefault();
Shell s = new Shell(display);

s.setSize(300, 300);
s.setLayout(new GridLayout(1, true));

Composite c = new Composite(s, SWT.NONE);
c.setLayout(new GridLayout(1, false));
Text text = new Text(c, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
GridData gridData = new GridData(SWT.NONE, SWT.NONE, false, false);
gridData.heightHint = 200;
gridData.widthHint = 200;
text.setLayoutData(gridData);

text.setBackground(s.getDisplay().getSystemColor(SWT.COLOR_WHITE));

text.setSize(250, 250);

Font stdFont = new Font(text.getDisplay(), new FontData("Consolas", 11, SWT.NORMAL));

text.setFont(stdFont);

StringBuffer buffer = new StringBuffer();

for (int row = 0; row < 40; row++) {
for (int column = 0; column < 20; column++) {
buffer.append("Word ");
}
buffer.append("\n");
}

text.setText(buffer.toString());

s.open();



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

}

通过正确限制文本的大小(使用布局数据,而不是设置大小),SWT 现在知道文本何时大于区域并启用滚动。

请注意,如果您在创建后输入一些内容,您的解决方案确实有效(我知道您的情况不可能)。

关于java - Eclipse插件: Show window with scrollable text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34086259/

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