gpt4 book ai didi

java - SWT TableViewer 标题高度

转载 作者:行者123 更新时间:2023-12-01 19:17:49 27 4
gpt4 key购买 nike

我正在更改 SWT Tableviewer 的字体大小,但表头的高度没有改变,因此标签被切断。有什么办法可以解决这个问题吗?

(这是在 Windows 上)

最佳答案

Table 位于 SWT 和另一个 TableViewer 位于 JFace。因此,尚不清楚您是否需要 TableViewer 还是 Table 的解决方案。另外,在您这边没有任何代码片段的情况下,我选择为 JFaceTableViewer 演示它,尽管 Table 的概念保持不变> 和 SWT

>> 设置字体之前

Before

>> 设置字体后

After

您可以看到标题高度的差异。

>>代码

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 注释之间的代码。

此外,您也不能执行此操作来设置标题图像。请参阅Table Header Image Bug

关于java - SWT TableViewer 标题高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5806208/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com