Duc Tran
Duc Tran

Reputation: 39

How to set the header height of an SWT Table?

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.

Upvotes: 1

Views: 865

Answers (1)

R&#252;diger Herrmann
R&#252;diger Herrmann

Reputation: 20985

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.

Upvotes: 1

Related Questions