滚动复合子项未填充内容

  • 本文关键字:填充 复合 滚动 java swt
  • 更新时间 :
  • 英文 :


我有一个ScrolledComposite widget,我正在一个选择侦听器中初始化它(反过来附加到另一个复合体(。这个滚动复合又包含另一个复合,而复合又包含一个按钮和一个标签。当内部组合出现时,其子小部件都不会显示。我以前使用过很多次ScrolledComposites,一切看起来都很好。你们中有人能看出什么问题吗?注意,ScrolledComposite 是一个类变量。另请注意,无论我是否在 else 条件下处理复合物及其内容,都会发生此问题。

    final Button showConsole = new Button(topLeft, SWT.CHECK);
    showConsole.setText("Show Debug Console");
    showConsole.setFont(new Font(domains.getDisplay(), "Segoe UI", 9, SWT.ITALIC));
    showConsole.setSelection(false);
    showConsole.addSelectionListener(new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            //The total widget group is only supposed to appear when the button is selected
            if (showConsole.getSelection()) {
                scrolledConsoleComp = new ScrolledComposite(leftComposite,
                        SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
                Composite consoleComposite = new ScrolledComposite(scrolledConsoleComp, SWT.NONE | SWT.BORDER);
                consoleComposite.setLayout(new GridLayout());
                consoleComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
                consoleComposite.setVisible(true);
                scrolledConsoleComp.setContent(consoleComposite);
                scrolledConsoleComp.setExpandHorizontal(true);
                scrolledConsoleComp.setExpandVertical(true);
                scrolledConsoleComp.setLayout(new GridLayout());
                scrolledConsoleComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
                Button clear = new Button(consoleComposite, SWT.PUSH);
                clear.setText("Clear Console");
                final Label consoleText = new Label(consoleComposite, SWT.WRAP);
                consoleText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
                consoleText.setText("Messages: n" + consoleData);
                clear.addSelectionListener(new SelectionListener() {
                    @Override
                    public void widgetSelected(SelectionEvent e) {
                        consoleData = "";
                        consoleText.setText("Messages: n" + consoleData);
                    }
                    @Override
                    public void widgetDefaultSelected(SelectionEvent e) {
                    }
                }); 
                scrolledConsoleComp.setMinSize(leftComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
                leftComposite.layout(true);
            } else {
                scrolledConsoleComp.setVisible(false);
                scrolledConsoleComp.dispose();
                leftComposite.layout(true);
            }
        }

我感谢任何见解。如果这个问题中的任何内容不清楚,请告诉我。谢谢!

您正在ScrolledComposite中创建ButtonLabel。它们不会显示,因为未调用setContent()

通常,ScrolledComposite包含一个包含所有其他小部件的Composite

你的consoleComposite应该成为Composite.
无需打电话setVisible()

最新更新