簡體   English   中英

ScrolledComposite子項未填充內容

[英]ScrolledComposite children not populating content

我有一個ScrolledComposite小部件,該小部件正在選擇偵聽器中初始化(依次附加到另一個復合材料)。 該ScrolledComposite依次包含另一個Composite,該復合又包含一個Button和一個Label。 當內部組合出現時,它的所有子小部件都沒有。 之前,我已經使用ScrolledComposite很多次了,一切看起來都很對。 你們中有人可以看到任何錯誤嗎? 注意,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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM