JAVA SWT中禁用的控件没有显示工具提示

4

我正在为我的JAVA应用程序使用JAVA SWT来创建GUI界面。

现在,我已经将复选框设置为不可用,但我想显示相应的工具提示。

这种情况是否可行?

我的代码如下:

myCheckbox.setSelection(false);
myCheckbox.setEnabled(false);
myCheckbox.setToolTipText("Tooltip message");
3个回答

7
正如greg-449在他的回答中指出的那样,这是不可能的。
但是,如果你真的想要,你可以通过将复选框封装在一个具有相同工具提示文本的Composite中来绕过此限制。
这种方法是由Andrzej Witecki在这个Eclipse论坛主题中提出的。
一个例子:
public static void main(String[] args) {

    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout());

    Composite c = new Composite(shell, SWT.NONE);
    c.setLayoutData(new GridData());  // default values so it doesn't grab excess space
    c.setLayout(new FillLayout());

    Button myCheckbox = new Button(c, SWT.CHECK);
    myCheckbox.setText("Checkbox text");
    myCheckbox.setToolTipText("Tooltip message");
    myCheckbox.setEnabled(false);

    // assign the same tooltip to the encapsulating composite
    myCheckbox.getParent().setToolTipText(myCheckbox.getToolTipText());  

    shell.setSize(200, 200);
    shell.open();

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

嗨,Loris,我在其他地方找到了这个解决方案,并发现它很有用。虽然不是完美的解决方案,但它似乎是一个有效的解决方法。 - Sandeep T D S

1
不,这是不可能的。
已禁用的控件无法生成显示工具提示所必需的事件。

嗨,Greg,感谢您的回复。您能提及一下您的参考资料吗?我们需要知道这是否是SWT的限制。 - Sandeep T D S
我手头没有参考资料,但肯定的是 SWT 不会在禁用的控件上生成事件。 - greg-449

-1
如果您为禁用的组件(按钮、复选框等)创建一个特定的组合,并在组合上添加工具提示,则在组件被禁用时将显示该工具提示。
如果您还希望在启用组件时显示工具提示,请不要忘记为组件本身添加工具提示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接