如何显示 swt 文本框的悬停文本

Posted

技术标签:

【中文标题】如何显示 swt 文本框的悬停文本【英文标题】:How to show hover text for a swt text box 【发布时间】:2019-09-17 23:51:57 【问题描述】:

当用户将鼠标放在 SWT 文本框上时,我们正在尝试显示一个悬停框。从悬停框用户将能够复制内容。这是要求。

请提供一个实现相同的示例来帮助我。或者请提供一个见解如何在编辑器中实现相同的eclipse。

我们正在使用 Eclipse 氧气 IDE,解释的功能是针对独立的 Eclipse RCP 应用程序

提前致谢!

【问题讨论】:

【参考方案1】:

请通过tutorial 浏览SWT Text 上的悬停文本。

以下代码是该教程代码的修改版本

package test;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class Example 

    public static void main(String[] args) 
        Display display = new Display();
        Shell shell = new Shell(display);

        GridLayout gridLayout = new GridLayout(2, true);
        shell.setLayout(gridLayout);

        Label label1 = new Label(shell, SWT.NONE);
        label1.setText("First Name");
        Text text1 = new Text(shell, SWT.BORDER);
        Label label2 = new Label(shell, SWT.NONE);
        label2.setText("Last Name");
        Text text2 = new Text(shell, SWT.BORDER);
        shell.pack();

        final HoverShell hShell = new HoverShell(shell);
        text1.addListener(SWT.MouseHover, new Listener() 

            @Override
            public void handleEvent(Event event) 
                hShell.text.setText("Enter First Name");
                hShell.hoverShell.pack();
                hShell.hoverShell.open();
            
        );

        text1.addListener(SWT.MouseExit, new Listener() 

            @Override
            public void handleEvent(Event event) 
                hShell.hoverShell.setVisible(false);
            
        );
        shell.open();
        while (!shell.isDisposed()) 
            if (!display.readAndDispatch())
                display.sleep();
        
        display.dispose();
    



class HoverShell 
    Shell hoverShell;
    Text text;

    public HoverShell(Shell shell) 
        hoverShell = new Shell(shell, SWT.ON_TOP | SWT.TOOL);
        hoverShell.setLayout(new FillLayout());
        text = new Text(hoverShell, SWT.NONE);
        text.setBackground(hoverShell.getBackground());
        text.setEditable(false);
    

输出

【讨论】:

非常感谢您分享的链接。我试过了,我可以看到内容作为工具提示。在我们的要求中,用户应该有复制悬停文本中显示的内容的规定盒子。你能告诉我如何达到同样的效果吗?【参考方案2】:

我知道这有点晚了,但我有另一个解决方案。您可以使用内置函数 setToolTipText 和 getToolTipText。要复制,我会插入一个按钮,该按钮使用 Java 剪贴板操作调用 getToolTipText 函数,例如 here。

【讨论】:

你能做一个独立的答案而不是一个链接吗?

以上是关于如何显示 swt 文本框的悬停文本的主要内容,如果未能解决你的问题,请参考以下文章

jsp一个文本框在失去焦点的时候,显示其输入的值,如果没有输入该文本框获得焦点

使用源代码管理更改文本框的内容

如何使用 ASP 文本框的 Textchange 属性

如何在悬停时更改文本框内容

将鼠标悬停在按钮上时如何更改 div 的文本?

如何调整PPT中文本框的位置