java - 如何在文本字段处于焦点时展开文本字段,而在焦点失焦时如何折叠文本字段?

标签 java swt jface tooltip

我想使用一个文本字段,当用户输入一些数据时,以及当用户完成编辑并移出文本字段时,该文本字段将展开,而不是折叠。之后,当用户关注文本字段时,它应该像工具提示一样展开。任何与此相关的指示都会对我有所帮助。

最佳答案

此代码应该让您了解如何执行此操作:

public static void main(String[] args)
{
    Display display = Display.getDefault();
    final Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(1, false));

    final Text text = new Text(shell, SWT.BORDER | SWT.MULTI);
    text.setText("edasdasdas\n\nasdasda\n\nasdasd");

    final GridData data = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
    data.heightHint = 100;

    text.setLayoutData(data);

    text.addListener(SWT.FocusIn, new Listener()
    {
        @Override
        public void handleEvent(Event arg0)
        {
            data.heightHint = 100;
            shell.layout(true);
        }
    });

    text.addListener(SWT.FocusOut, new Listener()
    {
        @Override
        public void handleEvent(Event arg0)
        {
            data.heightHint = 50;
            shell.layout(true);
        }
    });

    Button button = new Button(shell, SWT.PUSH);
    button.setText("Button");

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

当焦点丢失/获得时,它基本上会改变 GridDataheightHint 。之后您需要重新布局父级。

您必须自己对“聚焦高度”和“非聚焦高度”值进行一些调整。

以下是一些屏幕截图:

焦点:

enter image description here

没有焦点:

enter image description here

只需按按钮即可失去焦点。

关于java - 如何在文本字段处于焦点时展开文本字段,而在焦点失焦时如何折叠文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16030076/

相关文章:

java - 如何在 SWT Java 8 中使用 FXCanvas

java - 如何覆盖 JFace 向导的下一个按钮事件

java - JFace WizardSelectionPage 和 IWizardNode

java - 如何让 AspectJ 和 Maven 参与 War 项目?

java - 如何找出线程处于等待状态的时间

java - 我想检测图像中的对象并在另一个页面中重绘它,所以有人会建议可以使用哪种算法?

java - 在 SWT 中处理关闭红色 X 按钮的问题

java - 如何使用GSON反序列化

java - 如何在状态行中显示 ProgressMonitorDialog 和进度

multithreading - 使用jFace和SWT,将Gui线程作为主线程是更可取的还是无关紧要的?