当前位置: 首页 > 知识库问答 >
问题:

我怎么能有一个可滚动的禁用文本?

公孙嘉禧
2023-03-14

我的文本声明为,

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

在某些情况下,它应该被禁用。但当我发短信时。setEnabled(假) 文本的滚动条也被禁用,我无法完全看到文本中的值

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

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

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

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

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

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

共有1个答案

吴宏扬
2023-03-14

禁用后,您将无法使文本控件显示滚动条。这只是本机控件的工作方式,即操作系统呈现控件的方式。

但是,您可以将文本包装在滚动组合中。这样一来,Scrolled Composite将滚动,而不是文本

这是一个例子:

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();
}

这就是它看起来的样子:

 类似资料:
  • 我不想使用片段和片段布局。可以禁用eclipse的该属性吗?首先,我创建一个类和xml文件,然后在Android清单文件中声明它们。这对我来说很有效,但需要很长时间。如果我可以禁用它,它会更容易。

  • 我有一个注册了ActionListener的JTextField。当这个JTextField有焦点时,按下enter键,就会创建一个ActionEvent。 如何将此事件链接到另一个组件ActionListener(如JButton),以便运行其代码?

  • < b >想改进这个问题?通过编辑此帖子添加详细信息并澄清问题。 我如何用div制作所谓的面具。你好,我正在寻找解决我问题的方法,如果有人能帮助我,我会非常感激。我希望你只能通过div看到背景。如果有人能帮助我,我会非常感激。非常感谢。亚历克斯。

  • 从Scala列表开始。 如何将其转换为可遍历一次?

  • 我刚刚开始编写Bukkit,我一直在尝试编写一个插件,为某个播放器启用pvp,并且可以禁用它,但只能为他们自己。它一直工作正常,直到我发现我需要一个事件来完成这项工作,但我还没有了解我需要的事件。在网上看了一些视频/东西后,我找不到任何可以帮助我的东西。如果你能告诉我我将如何做到这一点,那就太好了。此外,如果你能解释更多关于事件的信息,也将不胜感激:)

  • 我有“下载正在进行文件”对话框活动。当用户按下“隐藏”按钮时,活动将创建通知和隐藏进度对话框。并且当用户单击到通知时,活动显示进度对话框再次出现在活动中。我如何在按下按钮“后退”时切换活动到后退任务?