How to set the header height of an SWT Table?

836 Views Asked by At

Currently, I have some issue with setting the height of table header. Here is my code:

public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Table table = new Table(shell, SWT.H_SCROLL | SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION | SWT.CHECK);
    table.setLinesVisible(true);
    table.setHeaderVisible(true);
    final String[] titles = { "titleioioio", "C", "!", "Description", "Resource", "In Folder", "Location" };
    for (int i = 0; i < titles.length; i++) {
        TableColumn column = new TableColumn(table, SWT.NONE);
        column.setText(titles[i]);
    }

    int count = 10;
    for (int i = 0; i < count; i++) {
        TableItem item = new TableItem(table, SWT.NONE);
        item.setText(0, "x");
        item.setText(1, "y");
        item.setText(2, "!");
        item.setText(3, "this stuff behaves the way I expect");
        item.setText(4, "almost everywhere");
        item.setText(5, "some.folder");
        item.setText(6, "line " + i + " in nowhere");
    }
    table.pack();
    for (int i = 0; i < titles.length; i++) {
        table.getColumn(i).pack();
    }
    Button button = new Button(shell, SWT.PUSH);
    button.setText("change font");
    button.addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
            FontDialog d = new FontDialog(shell);
            FontData data = d.open();
            table.setFont(new Font(display, data));
            for (int i = 0; i < titles.length; i++) {
                table.getColumn(i).pack();
            }

        }

        public void widgetDefaultSelected(SelectionEvent e) {

        }
    });

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

Is there any way to set the height of this table header? I tried finding a setSize() method in Table and TableColumn, but it does not exist.

1

There are 1 best solutions below

0
On BEST ANSWER

Changing the height of a header in an SWT Table or Tree is not possible.

SWT uses the native widgets of the underlying platform, which in some cases does not allow to change the header height. In order to work consistent on all platforms, SWT does not provide API therefore.