SWT TableViewer标头高度

问题描述

| 我正在更改SWT Tableviewer的字体大小,但是表头的高度没有改变,因此标签被切除了。有没有什么办法解决这一问题? (在Windows上)     

解决方法

Table
落在ѭ1之下,另一个on2ѭ落在
JFace
之下。因此尚不清楚您是否需要a2ѭ或
Table
的解决方案。同样在您身边没有任何代码片段的情况下,我选择针对
JFace
TableViewer
进行演示,尽管the0ѭ和
SWT
的概念将保持不变。 >>设置字体之前 >>设置字体后 您可以看到标题高度的差异。 >>代码
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class TVHeaderTest 
{
    private class MyContentProvider implements IStructuredContentProvider {
        public Object[] getElements(Object inputElement) {
            return (MyModel[])inputElement;
        }
        public void dispose() {
        }
        public void inputChanged(Viewer viewer,Object oldInput,Object newInput) {
        }
    }

    public class MyModel {
        public int counter;
        public MyModel(int counter) {
            this.counter = counter;
        }
        public String toString() {
            return \"Item \" + this.counter;
        }
    }

    private static Display display;

    public TVHeaderTest(final Shell shell) 
    {
        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 = {\"!\",\"Description\",\"Resource\",\"In Folder\",\"Location\"};
        for (int i=0; i<titles.length; i++) {
            TableColumn column = new TableColumn (table,SWT.NONE);
            column.setText (titles [i]);
            column.setWidth(100);
        }

        final TableViewer v = new TableViewer(table);
        v.setLabelProvider(new LabelProvider());
        v.setContentProvider(new MyContentProvider());


        MyModel[] model = createModel();
        v.setInput(model);
        v.getTable().setLinesVisible(true);


        Button button = new Button(shell,SWT.PUSH);
        button.setText(\"Set Font\");

        // FOCUS ON THIS PART - START
        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) {
            }
        });
        // FOCUS ON THIS PART - END
        shell.pack();
    }

    private MyModel[] createModel() {
        MyModel[] elements = new MyModel[10];
        for( int i = 0; i < 10; i++ ) {
            elements[i] = new MyModel(i);
        }
        return elements;
    }

    public static void main(String[] args) 
    {
        display = new Display ();
        Shell shell = new Shell(display);
        shell.setLayout(new GridLayout());
        shell.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));

        new TVHeaderTest(shell);
        shell.open ();

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

        display.dispose ();

    }

}
// FOCUS ON THIS PART - START
// FOCUS ON THIS PART - END
注释之间检出代码。 同样,您也无法设置标题图像。请参阅表标题图像错误