我创建了一个SWT表并添加了列。我想单独将粗体字应用于标题行。所以我的代码如下所示
Table table= new Table(top, tableStyle);
Font font = new Font(null, StringUtils.EMPTY, 9, SWT.BOLD);
for (int i = 0; i < titles.length; i++)
{
new TableColumn(table, SWT.NONE);
header.setFont(i, font);
header.setText(i, titles[i]);
}
font.dispose();
在上面的代码中,我已经处理了,因为这是一个很好的做法。但这是从标题中删除字体样式。如果我删除最后一行,则仍然会应用字体。
这里有错吗?或者这是预期的行为?
答案 0 :(得分:5)
当您不再需要dispose()
时,您需要等待Font
public static void main(String[] args)
{
final Display d = new Display();
Shell s = new Shell(d);
s.setLayout(new FillLayout());
Table table = new Table(s, SWT.NONE);
Font font = new Font(null, "", 12, SWT.BOLD);
for (int i = 0; i < 3; i++)
{
TableItem item = new TableItem(table, SWT.NONE);
item.setFont(font);
item.setText("" + i);
}
table.addListener(SWT.Dispose, e -> font.dispose());
s.pack();
s.open();
while (!s.isDisposed())
{
if (!d.readAndDispatch())
d.sleep();
}
d.dispose();
}
。您可以将处置绑定到表的dispose事件,这样您就不必手动处理它:
{{1}}