Как упаковать столбец дерева SWT, чтобы отображались заголовки пустых столбцов? - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь упаковать столбцы дерева SWT, чтобы каждый столбец был достаточно широким для отображения текста заголовка, даже если элементы дерева для этого столбца пусты.

Вот мой пример кода который показывает проблему:

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.swt.widgets.TreeItem;

public class TestTreePacking {

    public static void main(String[] args) {
        Display display = new Display();

        Shell shell = new Shell(display, SWT.DIALOG_TRIM);
        shell.setLayout(new FillLayout());

        // Create tree with 3 columns
        Tree tree = new Tree(shell, SWT.CHECK);
        tree.setHeaderVisible(true);
        tree.setLinesVisible(true);
        for (int i = 0; i < 3; ++i) {
            TreeColumn col = new TreeColumn(tree, SWT.NONE);
            col.setText("Column " + i);
        }

        shell.pack();
        shell.setSize(400, 100);
        shell.open();

        // Create a tree item, leaving the second/middle column blank
        TreeItem item = new TreeItem(tree, SWT.NONE);
        item.setText(0, "Test first col");
        item.setText(2, "Test last col");

        // Pack all columns
        for (TreeColumn column : tree.getColumns()) {
            column.pack();
            // column.pack();
        }

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

Это приводит к этому:

enter image description here

Если я раскомментирую второй column.pack() вызов, Я получаю желаемый результат:

enter image description here

Это кажется отвратительным, и я не понимаю, почему это работает, когда один пакет не работает. Есть ли лучший способ выполнить sh это?

В случае, если это имеет значение, я нахожусь на CentOS, используя MATE 1.16.2, Eclipse 4.12.0 и GTK 3.22.30.

...