对于JAVA SWT中禁用的控件,工具提示不可见

时间:2016-08-23 08:39:00

标签: java swt

我正在使用JAVA SWT作为我的JAVA应用程序的GUI。

现在我已经设置了一个禁用的复选框,但我想显示相同的工具提示。

这可能吗?

我的代码是:

myCheckbox.setSelection(false);
myCheckbox.setEnabled(false);
myCheckbox.setToolTipText("Tooltip message");

3 个答案:

答案 0 :(得分:4)

正如greg-449在answer中指出的那样,这是不可能的。

但是,如果您真的想要,可以通过使用相同的工具提示文本将复选框封装在Composite中来解决此限制。

这种方法是由Andrzej Witecki在this Eclipse forum topic中提出的。

一个例子:

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

答案 1 :(得分:1)

不,这是不可能的。

已禁用的控件不会生成显示工具提示所需的事件。

答案 2 :(得分:-2)

如果您为已禁用的组件(按钮,复选框等等)创建特定复合材料并在复合材料上添加工具提示,则会在禁用组件时显示该工具提示。

如果您还希望在启用时显示该组件,请不要忘记添加组件的工具提示。