问题描述
|
我正在更改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
注释之间检出代码。
同样,您也无法设置标题图像。请参阅表标题图像错误