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

标签 java eclipse eclipse-plugin swt

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

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

我们正在使用 Eclipseoxygen IDE,所解释的功能适用于独立的 Eclipse RCP 应用程序

提前致谢!

最佳答案

请仔细阅读此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);
    }
}

Output

Output

关于java - 如何显示 swt 文本框的悬停文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55901943/

相关文章:

java - Java 中的 Apache mod_dav XML 尾随内容 SAX 解析器错误

java - 使用 AIDL (Android) 跨进程处理错误的推荐方法

java - com/android/dx/command/dexer/Main : Unsupported major. 次要版本 52.0

java - 需要卸载哪个java版本

java - 扩展 Eclipse C 编辑器的所有功能

java - 在谷歌应用引擎数据存储中查询聚合 ("group by"的替代策略

java - Galileo 可以使用在 Helios 中创建的工作区/项目吗?

java - 未找到 .classpath 和 .project

java - 与大家共享代码格式化程序设置

java - 仅当选择文件夹时才显示 Eclipse 插件弹出菜单