当前位置: 首页 > 面试题库 >

可见性设置为false后,SWT组件重新布局

袁奇逸
2023-03-14
问题内容

可以说,如果我有一个GridLayout组合,其列=1。(类似垂直流布局)

我已将标签1,标签2,标签3添加到此组合中,它们将相应地出现。

----------
Label 1  |
Label 2  |
Label 3  |
----------

因此,如果将标签2的可见性设置为false,是否可以将标签3向上移动以替换标签2?如果将Label 2的可见性设置为true,Label
3是否会向下移动?


问题答案:

一个非常简单的解决方案可以使用GridData::exclude属性。例如,

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
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;

public class HideLabel 
{
    public static void main(String[] args)
    {
        Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setLayout(new GridLayout(1, false));
        shell.setText("Hide Label");

        Label label = new Label(shell, SWT.NONE);
        label.setText("Label 1");

        final Label bHidden = new Label(shell, SWT.NONE);
        bHidden.setText("Label 2");
        GridData data = new GridData();
        data.exclude = false;
        data.horizontalAlignment = SWT.FILL;
        bHidden.setLayoutData(data);

        label = new Label(shell, SWT.NONE);
        label.setText("Label 3");

        Button button = new Button(shell, SWT.CHECK);
        button.setText("hide");
        button.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event e) {
                Button b = (Button) e.widget;
                GridData data = (GridData) bHidden.getLayoutData();
                data.exclude = b.getSelection();
                bHidden.setVisible(!data.exclude);
                shell.layout(false);
            }
        });
        shell.setSize(200, 200);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}


 类似资料:
  • 我有一个项目列表,我在网页上显示其内容。每个项目都有一个布尔值来表示它是否已被选中。下面给出了. xhtml文件和后备bean项目。问题是每次我选择或取消选择网页中的布尔按钮时,它总是将后备bean中的布尔属性设置为false。 .xhtml Project.java(背豆)

  • 大家好,我有一个关于forloop和在forloop中将numericupdowns的可见性设置为true的问题。这就是我想要完成的: 这就是我想要做的: 这有可能吗?怎么做?事先谢谢你

  • 我有一个动态生成的流程图与jsPlumb。我将它保存到MySQL数据库,我需要一个不同的视图,没有任何编辑功能。 我知道如何删除所有部分,使它们不可编辑,但它总是显示连接点(左,右,顶部,底部) 如何使它们不可见,以便在没有连接点的情况下只看到连接器/箭头? 宽度和高度为1的矩形使其非常小,但仍然可见。如何使其不可见?:) thx so fa xQp

  • 我有一个要求,在editbox中输入文本后,单击虚拟键盘完成(EditorInfo.IME\u ACTION\u DONE),现在光标不可见[我使用的是editText.setCursorVisible(false)]。现在问题是我再次单击编辑框光标不可见,但文本进入编辑框。 谢谢

  • 我有一个布局,即MotionLayout,它必须为我定义了motionscene约束集开始和结束的FrameLayouts。并且它们是正确的动画。 然后,在这个动画框架布局下,我添加了两个文本视图,在单击时,我尝试隐藏一个,显示另一个,但两个都保持可见 重写有趣的onViewCreated(View:View,SavedInstanceState:Bundle?){super.onviewcrea

  • 我有一个区域有很多对象,包括按钮等,可以点击。 动画不透明度工作很好,但我发现不可见的按钮仍然在画布的堆栈中,因此仍然可以点击。我想运行一个不透明动画,然后将项目设置为可见性隐藏,一旦它完成...这是可能的吗? 我的尝试产生了一个淡出的动画,但在淡出动画可以运行之前突然从页面上掉下来。 我基本上是在尽量避免画布上其他元素的干扰,但仍然保持在那里。 我得到了错误的行为,在项目消失之前,完全淡出,或者