gpt4 book ai didi

java - 我怎样才能有一个可滚动的禁用文本?

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

我的文本声明为,

Text text= new Text(parent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.WRAP);

在某些情况下应该禁用它。但是当我这样做的时候
text.setEnabled(false); 文本的滚动条也被禁用,我无法完全看到文本中的值。

我的文本域不能是只读的。它在某些情况下应该是可编辑的。

我知道文本中的 setEditable() 方法,但我希望具有与禁用文本时相同的行为,即背景颜色更改、无闪烁光标(插入符号)、无法进行鼠标点击和文本不可选择等

我可以通过这样做来改变背景颜色

text.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));

但我无法禁用光标、文本选择和鼠标单击。

enter image description here

有没有办法让禁用的文本的滚动条保持 Activity 状态?

最佳答案

Text 控件被禁用时,您将无法显示滚动条。这只是 native 控件的工作方式,即操作系统呈现控件的方式。

但是,您可以将Text 包裹在ScrolledComposite 中。这样,ScrolledComposite 就会滚动,而不是 Text

这是一个例子:

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

final ScrolledComposite composite = new ScrolledComposite(shell, SWT.V_SCROLL);
composite.setLayout(new FillLayout());

final Text text = new Text(composite, SWT.MULTI | SWT.BORDER | SWT.WRAP);

composite.setContent(text);
composite.setExpandHorizontal(true);
composite.setExpandVertical(true);
composite.setMinSize(text.computeSize(SWT.DEFAULT, SWT.DEFAULT));

Button button = new Button(shell, SWT.PUSH);
button.setText("Add text and disable");
button.addListener(SWT.Selection, new Listener()
{
@Override
public void handleEvent(Event arg0)
{
text.setText("lalala\nlalala\nlalala\nlalala\nlalala\nlalala\n");
text.setEnabled(false);
composite.setMinSize(text.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
});

shell.pack();
shell.setSize(300, 150);
shell.open();

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

这是它的样子:

enter image description here

关于java - 我怎样才能有一个可滚动的禁用文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22166884/

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