Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当文本字段';它在焦点上,并且在什么时候';它不对焦了,应该塌了吗?_Java_Swt_Jface_Tooltip - Fatal编程技术网

Java 当文本字段';它在焦点上,并且在什么时候';它不对焦了,应该塌了吗?

Java 当文本字段';它在焦点上,并且在什么时候';它不对焦了,应该塌了吗?,java,swt,jface,tooltip,Java,Swt,Jface,Tooltip,我想使用一个文本字段,当用户输入一些数据时,当用户完成编辑并移出文本字段时,文本字段将展开,而不是折叠。之后,当用户关注文本字段时,它应该像工具提示一样展开。任何与此相关的指针都会对我有所帮助。只需在文本字段中添加一个: text.addFocusListener(new FocusListener() { @Override public void focusGained(FocusEvent e) { text.setSize(); // put in the

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

只需在文本字段中添加一个:

text.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        text.setSize(); // put in the size you want
    }

    @Override
    public void focusLost(FocusEvent e) {
        text.setSize(); // put in the size you want
    }
});
请注意,要使
setSize
正常工作,
text
的父级不能有布局。

只需在文本字段中添加一个:

text.addFocusListener(new FocusListener() {
    @Override
    public void focusGained(FocusEvent e) {
        text.setSize(); // put in the size you want
    }

    @Override
    public void focusLost(FocusEvent e) {
        text.setSize(); // put in the size you want
    }
});

请注意,要使
setSize
正常工作,
text
的父级不能有布局。

此代码应该让您了解如何进行布局:

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();
}
当焦点丢失/获得时,它基本上会更改网格数据的
heightHint
。之后,您需要重新布局父级

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

以下是一些屏幕截图:

重点:

无焦点:


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

此代码应能让您了解如何操作:

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();
}
当焦点丢失/获得时,它基本上会更改网格数据的
heightHint
。之后,您需要重新布局父级

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

以下是一些屏幕截图:

重点:

无焦点:

只需按
按钮
即可失去焦点